javascript - Event binding on dynamically created elements? -
i have bit of code looping through select boxes on page , binding .hover event them bit of twiddling width on mouse on/off.
this happens on page ready , works fine.
the problem have select boxes add via ajax or dom after initial loop won't have event bound.
i have found plugin (jquery live query plugin), before add 5k pages plugin, want see if knows way this, either jquery directly or option.
as of jquery 1.7 should use jquery.fn.on:
$(staticancestors).on(eventname, dynamicchild, function() {}); prior this, recommended approach use live():
$(selector).live( eventname, function(){} ); however, live() deprecated in 1.7 in favour of on(), , removed in 1.9. live() signature:
$(selector).live( eventname, function(){} ); ... can replaced following on() signature:
$(document).on( eventname, selector, function(){} ); for example, if page dynamically creating elements class name dosomething bind event parent exists, document.
$(document).on('mouseover mouseout', '.dosomething', function(){ // want happen when mouseover , mouseout // occurs on elements match '.dosomething' }); any parent exists @ time event bound fine. example
$('.buttons').on('click', 'button', function(){ // here }); would apply
<div class="buttons"> <!-- <button>s generated dynamically , added here --> </div>
Comments
Post a Comment