在点击之前,我可以使用什么jQuery事件/方法绑定动态按钮?

时间:2010-07-09 10:46:11

标签: jquery-plugins javascript-events bind jquery

我正在尝试将jQuery插件附加到动态生成的按钮上。我试过以下但没有成功:

$('.myButton').live('click', function() {
    $(this).file().choose(function(e, input) {
        // ...
    });
});

我想这不起作用,因为插件需要在点击之前绑定

所以我试过......

$('.myButton').load(function() { ... });

和(现在变得绝望)......

$('.myButton').live('load', function() { ... });

在用户点击之前,我可以使用哪种方法绑定新生成的按钮?

2 个答案:

答案 0 :(得分:1)

您需要添加代码:

    $('.myButton').live('click', function() {
        $(this).file().choose(function(e, input) {
        // ...
        });
    });

您动态添加按钮后(所以基本上将其添加到添加动态按钮的例程中)。

吉姆

答案 1 :(得分:1)

您可以在生成时将其绑定,例如如果它是由$.ajax()生成的,那么它看起来像这样:

$.ajax({
  //options...
  success: function(data) {
    //do stuff
    $(".myButton", data).file().choose(...);
  }
});

重要的部分是, data,我们给selector一个context来搜索它,所以它只找到在响应中加载的按钮。同样的技术也适用于other $.ajax() shorthand versions上的成功方法。


如果那不是一个选项,那么就有一条不那么高效的路线。您可以使用the .livequery() plugin主动查找并处理新元素,无论来源如何。在这种情况下,您的代码看起来像这样:

$(".myButton").livequery(function() {
  $(this).file().choose(...);
});