JQuery / Live已被弃用,也没关系......但是没有被替换

时间:2013-02-15 09:17:41

标签: javascript jquery

开启 不能替代 live ;新的 ON NOT ,适用于未来的元素。我的实施没有问题;我习惯使用直播,但我肯定知道什么时候有什么作用与jquery有效。

haml part:

.field
        %label Select a file
        = file_field_tag 'post[image]', :class => :dashed
        %span.adder + add another file

coffe part:

$("span.adder").on "click", (e) ->
    new_field = $(this).closest(".field").clone()
    $(new_field).insertAfter( $(this).closest(".field") )

为什么添加的新span.adder没有附加到其类的jquery行为? 在这种情况下,像这样的事情会起作用。

为什么JQuery的家伙会删除它? 我不明白。


更新


$("span.adder").on("click", function(){ });

不会像现场一样工作。

必须是

$(document).on("click", "span.adder", function(){ });

(感谢大家的回答。)

5 个答案:

答案 0 :(得分:6)

要使用未来的元素,您必须使用此文档

$(document).on('click', 'span.adder', function(){
       //Code here
});

答案 1 :(得分:1)

.on()出现之前,.live()已经被认为是处理事件绑定的低效方式,因此将来使用.on()

e.g: -

$(document).on('click', '#yourElement', function() { 
  // your functions here
});

有一个更好的解释here

答案 2 :(得分:0)

这是一个替代品。直接翻译将是:

$(document).on('click', '.my-selector', function() {});

答案 3 :(得分:0)

他们弃用并删除它,因为它们有更好的实现。您会看到.on()

的文档
$(ancestor).on(event, element, function);

您应该将其用作靠近该元素的祖先。有一些性能问题。

也升级jQuery版本。

答案 4 :(得分:0)

On works as委托`曾经做过,而不是完全像.live;您必须在父级上使用它,然后指定事件和触发它的子级;类似的东西。

$(window).on("click", ".button", function(){ 
    alert("You clicked the button... and I hate alerts");
});