繁体   English   中英

jQuery .live('click')仅绑定到页面上的第一个元素

[英]jQuery .live('click') only binding to first element on the page

我写了一个jQuery插件,绑定到页面上的8个元素,我想使用.live()将click操作绑定到每个元素中的链接。 当您单击链接时,它应使用ajax发布表单。 问题是所有8个元素的所有链接都提交了页面上第一个元素的表单。 当我使用.click()时,一切正常。 我更喜欢使用.live(),因为我会动态添加更多元素。

这是一些类似于我正在做的代码:

var $container = $(this);
var $form      = $container.find('form.some_form');
var $button    = $container.find('a.some_link');

这只会提交第一个元素的表单:

$button
.live('click', function() {
  // some code that submits $form via ajax
});

但是,这总是提交正确的形式:

$button
.click( function() {
  // identical code that submits $form via ajax
});

有什么关于.live()我应该知道吗? 难住了。

jQuery文档

直播活动目前仅在对选择器使用时才有效。 例如,这将起作用:$(“li a”)。live(...)但是这不会:$(“a”,someElement).live(...),这也不会:$(“a “).parent()。住(...)。

在你的情况下,你在一个变量上调用live(),这是一个find()调用的结果。 那不是选择器。 您需要找出一个标识所需元素的选择器。


编辑添加:对于后来发现此问题的任何人,现在首选的方法是使用on()函数。 on()函数没有相同的限制 - 因为它在jQuery对象上操作(而不是隐式绑定到文档),它可以在链接到达的一组元素上设置,就像在原始问题中一样。

尝试这样的事情。 除选择器外,您不能使用“live”。

$('a.some_link').live('click', function() {
    // some code that submits $form via ajax
});

希望能帮助到你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM