在JQuery插件中使用jQuery委托

时间:2011-11-16 18:02:30

标签: jquery

如果我正在编写一个jQuery插件

$.fn.newWin = function(docTypes) { 
                    $(this).live("click",function(){
                                    alert("I am done");
                    }); 
              };

此插件可以作为

调用
$("#content a, #partners a").newWin();

基本上我想要的是将.live.delegate交换。我怎样才能实现这一点,因为我还必须将被调用元素字符串传递给.delegate函数?

3 个答案:

答案 0 :(得分:2)

我不建议你在这里使用委托。如果可以(从jQuery 1.7开始),请使用.on()代替

$.fn.newWin = function(docTypes) { 
      $(this).on("click",function(){
            alert("I am done");
      }); 
};

答案 1 :(得分:1)

这取决于您想要实现的目标(插件的实际架构)。但它可能如下所示:

$.fn.newWin = function(elements_selector) {
    $(this).delegate(elements_selector, "click",function(){
        alert("I am done");
    });
};

可以像这样调用:

$("#content, #partners").newWin("a");

如果jQuery比1.7更新,您应该切换到.on()而不是.live().delegate()。请参阅documentation of .on() jQuery function

这是你所期望的吗?

答案 2 :(得分:0)

$.fn.newPlug = function(){
    var selector = $(this).selector;
    $(document.body).delegate(selector, 'click', function(){
        // do something...
    });
};
看看这个!