将jQuery函数添加到特定的元素

我知道你可以添加新的jQuery函数$.fn.someFunction = function()

但是,我只想将function添加到特定的元素。 我试过这个语法,它不工作$('.someElements').fn.someFunction = function()

我想这样做,以便我可以在代码$('someElements').someFunction();某处调用函数$('someElements').someFunction();

使用.bind().trigger()

 $('button').bind('someFunction',function() { alert('go away!') }); $('button').click(function(){ $(this).trigger('someFunction'); }); 

从jQuery 1.7开始, .on()方法是将事件处理程序附加到文档的首选方法。

哟可以这样做:

 $.fn.testFn = function(){ this.each(function(){ var className = $(this).attr('class'); $(this).html(className); }); }; $('li').testFn(); //or any element you want 

testing: http : //jsfiddle.net/DarkThrone/nUzJN/

哟,需要做同样的事情,提出这一点。 它不错的原因,你摧毁元素和function噗! 我认为…

 var snippet=jQuery(".myElement"); snippet.data('destructor', function(){ //do something }); snippet.data('destructor')(); 

@ Reigel的回答非常棒! 但是,您也可以使用$.fn语法,并让您的函数只处理某些元素:

 $.fn.someFunction = function(){ this.each(function(){ // only handle "someElement" if (false == $(this).hasClass("someElement")) { return; // do nothing } $(this).append(" some element has been modified"); return $(this); // support chaining }); }; // now you can call your function like this $('.someElement').someFunction(); 

看到工作jsfiddle: http : //jsfiddle.net/AKnKj/3/

我也有这个用例,但有一个caching的对象。 所以我已经有了一个jQuery对象,一个切换菜单,我想附加两个函数,“打开”和“closures”的对象。 保留元素本身的范围所需要的function就是这样,所以我希望this是菜单对象。 无论如何,只要添加函数和variables,就像任何其他JavaScript对象一样。 有时我忘记了。

 var $menu = $('#menu'); $menu.open = function(){ this.css('left', 0); this.is_open = true; // you can also set arbitrary values on the object }; $menu.close = function(){ this.css('left', '-100%'); this.is_open = false; }; $menu.close(); 

如果您只想为特定的select器使用此function,以下内容将适用于您。 我刚刚有一个场景,我需要这个,它很好地工作。

 $('.my-selector').each(function(){ $(this).init.prototype.getUrl = function(){ // do things }; }) 

那么以后你可以做

 $('.my-selector').getUrl() 

而不必将其定义为插件,或使用数据或绑定/开/触发事件。

显然你可以改变函数返回包含对象,如果你想通过返回this链接来使用它

 $('.my-selector').each(function(){ $(this).init.prototype.getUrl = function(){ // do things return this; }; }) 

最明显的解决scheme是分配一个函数作为对象的属性:

 obj.prop("myFunc", function() { return (function(arg) { alert("It works! " + arg); }); }); 

然后用这种方式在对象上调用它:

 obj.prop("myFunc")("Cool!"); 

注意:你的函数是外层的返回值,请看: http : //api.jquery.com/prop/#prop-propertyName-function

我有一个想法,我认为可能会接近你想要的,但它不起作用,我的结论是,这是不可能的。

我的想法是做你曾经尝试过,但在一个caching的jQuery对象,例如:

  var a = $(“a”);
 a.fn.someFunc = function(){...};
 a.someFunc(); 

但是由于$(...).fn不存在,所以这是不可能的。

我不确定我的答案,如果这将帮助你,但只是一个尝试如何使用.live?

 $(selector).live(click,function(){ //some codes here }); 

我这样做,工作很好..

  function do_write(){ $("#script").append("<script> $(\'#t"+(id_app+4)+"\').change(function(){ alert('Write Your Code here'); });<\/script>"); console.log("<script> $(\'#t"+(id_app+4)+"\').change(function(){ alert('hello'); });<\/script>"); } 

并调用您的dynamicfunction,这是在HTML中创build一个dynamic控制function