Javascript jQuery插件中的事件委派

Javascript jQuery插件中的事件委派,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,如何从jQuery插件初始化中获取选择器字符串,供事件委派使用 下面是一个简单的例子: (function($){ $.fn.pluginTest = function(){ $(document).on("click", this, function(e){ // action here }); } }(jQuery)); 上述代码将不起作用,因为。选择器上的类型必须是字符串。所以问题是如何在

如何从jQuery插件初始化中获取选择器字符串,供事件委派使用

下面是一个简单的例子:

(function($){
    $.fn.pluginTest = function(){

        $(document).on("click", this, function(e){
            // action here
        });            

    }
}(jQuery));
上述代码将不起作用,因为。选择器上的类型必须是字符串。所以问题是如何在plugininit中获取选择器

$(".box").pluginTest()

例如,如何获取.box。我一直在搜索这个和一些建议使用的.selector,但现在它已被弃用和删除。

实际上有数百页专门用于扩展jQuery。您尚未解释为什么以下内容不适用于您的插件:

(function($){
  $.fn.pluginTest = function(){
    this.on("click", this, function(e){
        // action here
    }); 
    return this;           
  }
}(jQuery));
例如:

作用${ $.fn.pluginest=函数{ this.onclick,this,function{ $this.toggleClass'red'; }; 归还这个; } }jQuery; $'.box'.pluginest; .red{背景色:红色;} .box{光标:指针;} 方框1 方框2
框3您可以使用.selector将事件处理程序添加到目标选择器

JS代码:


在上面的示例中,当您单击.bigBox时,将不会得到任何警报&您将只在.box上得到警报,因为事件处理程序通过其选择器绑定到目标元素

@dreamweiver No,点击事件应该绑定到元素,而不是所有文档:我已经尝试过了,所有文档都返回了点击事件。为什么你关心选择器是什么,你的插件不应该关心。它应该只关心用户选择的选择器的结果。我通常使用事件委派,如$document.onclick.box、函数{},因此当出现DOM更改(如从ajax添加的项)时,不需要重新运行脚本。我不建议这样做。我不知道有什么插件可以自动连接页面上的新元素。仅仅为你的插件改变这种模式是有问题的。在DOM改变后重新调用插件/函数是最好的做法吗?而不是使用事件委派。我愿意接受建议:这应该适用于旧版本,但它已被弃用并从最新版本中删除。嗯,我从未注意到这一点。在这种情况下,正如jQueryAPI页面中提到的,为什么不在调用插件pluginTest时将选择器也作为参数传递&使用相同的参数绑定eventyeah,这应该可以像文档中提到的那样工作,但是当您在选择器上初始化插件,然后将选择器传递给plugin param:Dyeah,这很奇怪。我有一个棘手的解决方法,如果您确保始终使用类选择器,并将其作为插件端的类选择器&将事件附加到该选择器,则可以获取类名。var cl='.+$this.attr'class';。我个人认为,任何jquery插件在运行时都不会更改选择器,在这种情况下,这应该是可行的。
$(document).on("click",this.selector, function(e) {
  alert('You clicked me!!!');
});