jQuery click() event not firing on AJAX loaded HTML elements

前端 未结 4 1722
挽巷
挽巷 2020-12-05 00:05

the subject is pretty descriptive of my problem, I am assuming it won\'t work this way, is there a way to make it work? (workaround)?

Here is the code that is loaded

相关标签:
4条回答
  • 2020-12-05 00:40
    $(document).on('click','sframe', function() { 
        var seat_number = this.id.match(/\d/g);
        alert(seat_number); 
    });
    
    0 讨论(0)
  • 2020-12-05 00:56

    you have to re-attach the event handlers to the dynamically added elements into the DOM. .live method was used widely but now its deprecated. In jQuery version 1.7+ you can use .on or alternatively you can use .delegate

    $(document).on("click",".sframe",function(e){
    
    });
    

    using delegate

    $(document).delegate(".sframe","click",function(e){
    
    });
    
    0 讨论(0)
  • 2020-12-05 00:58

    Unless you are calling that .bind() function after that markup is loaded onto the page, you need to use another function like .live() or preferably if using a recent version of jQuery, .on() because .bind() only targets DOM elements already present when run whereas .live() and .on() give you different scope options for keeping track of elements added to the page.

    0 讨论(0)
  • 2020-12-05 01:00

    Do this.

     $(document).on("click",".sframe",function(e){
     var seat_number = this.id.match(/\d/g);
     alert(seat_number); 
     });
    

    or

     $(document).delegate(".sframe","click",function(e){
     var seat_number = this.id.match(/\d/g);
     alert(seat_number); 
    
     });
    

    Edit:

    As of jQuery 1.7, the .live() method is deprecated. Use .on() to attach event handlers. Users of older versions of jQuery should use .delegate().

    0 讨论(0)
提交回复
热议问题