JQuery不适用于页面加载后创建的元素

时间:2010-11-08 20:50:11

标签: jquery

如果我这样称呼:

$(".month-selector").change(function(){
    setStones();
});

$(document).ready()内,它不适用于稍后创建的元素。我也尝试在创建它们之后调用上面的代码:

$("#month-selectors").html(month_selectors);

$(".month-selector").change(function(){
    setStones();
});

它仍然不起作用。但是,如果我创建一个静态的,它可以工作。

如何在页面加载后创建元素时将其应用于元素?

3 个答案:

答案 0 :(得分:14)

您可以使用jQuery的'live()'方法将事件侦听器添加到当前和未来的节点。

$(".month-selector").live('change', function(){
    setStones();
});

答案 1 :(得分:2)

这非常有帮助!但是,如果您在加载DOM后添加输入事件,则需要使用“click”事件才能使其工作:

  $("input#thename").live("click", function(event) {
// handler for what should happen when somebody clicks on the new input field, in this case I needed a datepicker to pop up so lets get that fired. Now that the click element registered the new input object with the DOM, it can be used like a normal jQuery selector!
    $("input#thename").datepicker();
    });

答案 2 :(得分:0)

尝试:

$(".month-selector").live("change", function(event) {
 // some code
});