2017-10-05 123 views
0

我创建了一个插件,它将创建动态元素并附加到某个容器。我想结合我的插件内针对这一元素的事件,以便它可以使用等在jQuery自定义插件中动态创建元素的事件

(function ($, window, document, undefined) { 
    $.scrollTo = function(el, options){ 
     // To avoid scope issues, use 'base' instead of 'this' 
     // to reference this class from internal events and functions. 
     var base = this; 

     // Access to jQuery and DOM versions of element 
     base.$el = $(el); 
     base.el = el; 

     base.init = function(){ 
      base.options = $.extend({},$.scrollTo.defaultOptions, options); 

      // Put your initialization code here 
     }; 

     // On click 
     base.$el.click(function (event) { 
      event.preventDefault(); 
      var span = $('<span class="myElement"></span>'); 
      span.appendTo('#main'); 
     });  

     // Run initializer 
     base.init(); 
    }; 

    $.scrollTo.defaultOptions = {}; 

    $.fn.scrollTo = function(options){ 
     return this.each(function(){ 
      (new $.scrollTo(this, options)); 
     }); 
    }; 

})(jQuery, window, document); 


//Initialize plugin 
$('.content #test').scrollTo(); 

我创建的click事件的新元素,并希望点击功能附加到它,并且功能我里面的插件信息想要利用插件选项。我怎么能达到这个需要帮助?

+0

它看起来像你已经做您需要什么'基地$ el.click()'...你有一个具体问题? –

+0

基本上我想附加单击事件为创建的span元素,并在其中使用插件选项。 –

+0

那么你已经在使用'base。$ el'元素来实现这个逻辑了,所以我没有看到你面临的问题? –

回答

0

如果您想将事件附加到一个动态生成的元素的话,我想你应该知道,最重要的是,你不能用通常的$("")jQuery的选择这样做,你必须使用$(document) ,例如:

而不是使用这样的:

$('input[type="checkbox"]') 

我们将使用此:

$(document).on("change","input[type='checkbox']",function(){}); 

处理点击任何checkbox

来灵感来自:Event binding on dynamically created elements?

+0

那么我如何使用它里面的插件选项? –

+0

@GhazanfarKhan老实说,我对创建'jQuery Plugin'没有任何意见,但我已经了解了动态元素,昨天的事件处理程序,并且我想与您分享这些信息,以防万一。祝你好运 –