2012-03-28 99 views
-1

如何摆脱扩展$.extend()功能从一个特定的目标对象。实例:通过重装与XHR的DOM的部分,我能够检测物体的像这样的外观:删除扩展功能

// Initliaize: 
$('#sausage').catsup(); 
    ... 
// Inside fn.catsup(): 
if($('body').find($(this)).size() == 0) // object has gone 

但我怎么能杀fn.catsup()?这似乎不工作:

$(this).clearQueue(); 
$(this).stop(); 
$(this).unbind(); 
delete $(this); 
+2

'kill catsup()'是什么意思? – Flash 2012-03-28 10:36:51

+0

...'猫'谁? – Matt 2012-03-28 10:37:05

+1

@msec。现在我更加困惑,你想做什么?你能给我们一些背景吗?这个问题很难理解。 – gdoron 2012-03-28 10:42:03

回答

6

如果我明白了这个问题,你想从jQuery中删除你的功能。

使用本:

$.fn.catsup = null; 

或者通过@Matt的建议:

delete $.fn.catsup 
+2

'delete $ .fn.catsup'可能更合适......它会使'jQuery.fn'看起来像它*永远不会*拥有'catsup'属性(''jQuery.fn.hasOwnProperty('catsup')'如果设置为null,则返回true;如果使用delete,则返回false。 – Matt 2012-03-28 10:46:19

+0

@Matt。对,加上你的名字。谢谢。 – gdoron 2012-03-28 10:47:32

0

除非我理解错误,你只是想catsup到不能再jQuery的扩展功能部分:

delete $.fn.catsup; 

请注意,这将而不是会影响所有jQuery DOM对象,即现有的和后来创建的jQuery DOM对象。

+1

由于'.fn'是'jQuery.prototype'的别名,因此**会影响现有的jQuery对象。 – Matt 2012-03-28 10:48:46

+0

检查[this fiddle](http://jsfiddle.net/dKBmt/)它会影响所有** jQuery对象。 – gdoron 2012-03-28 11:20:35

+0

确实如此 - 感谢您的纠正。我相应地编辑了我的答案。 – Xion 2012-03-28 15:10:37