2016-12-10 56 views
1

$主题有什么可能性?如何防止在特定的HTML元素上执行javascript/jquery?

试想一下,我有一个foo html元素

例如

<div data-toggle="loader">...</div> 

和具有由缺省绑定到其上的jQuery函数,

例如

$(document).ready(function(){ 
    $('[data-toggle=loader]').loader(); 
}); 

因此,这将DOM元素更改为类似,

例如

<div data-toggle="loader" class="active" style="height:800px">...</div> 

所以我想要做的就是防止应用更改foo元素,如果它有一个类名.example。因此,我无法触及默认的执行代码。但是我可以编写另一个函数来处理它。这是我现在面临的问题。任何可能实现这一目标?

回答

2

最简单的方法是改变DOM结构,即JS不再找到该元素,或用无害的东西覆盖jQuery插件。在插件脚本本身加载后,在脚本中执行此操作。

jQuery.fn.loader = jQuery.noop; //$.noop is an empty, pointless function 

[编辑]

在OP的评论来看,最好的办法可能是存储元素的副本,然后用它代替原始元素的插件已经解雇了。

var 
el = $('.some-element'), 
clone = el.clone(1, 1); 
//some time passes... plugin is called... does nothing to element 
el.replaceWith(clone); 
+0

嗨,谢谢你的回答。但它会在页面的任何地方禁用?我想保留它适用于除''.example'类的元素之外的其他元素。因为页面也可以包含许多其他功能。 –