当元素类发生更改时,是否有方法在jQuery中触发事件?类名更改jQuery中的事件
实例:
<img class="selected" />
成
<img class="selected newclass" />
触发事件
而且
<img class="selected" />
到
<img class="" />
触发事件
当元素类发生更改时,是否有方法在jQuery中触发事件?类名更改jQuery中的事件
实例:
<img class="selected" />
成
<img class="selected newclass" />
触发事件
而且
<img class="selected" />
到
<img class="" />
触发事件
您可能能够解决方法在一个小哈克的方式。 Hook
.addClass() & .removeClass()像这样:
var _addClass = $.fn.addClass,
_removeClass = $.fn.removeClass;
$.fn.addClass = function(){
// do whatever here
return _addClass.apply(this, arguments);
}
$.fn.removeClass = function(){
// do whatever here
return _removeClass.apply(this, arguments);
}
这样一来,假设你是看元素类的变化与jQuery的有兴趣,可以触发adding
或removing
类的任何代码。再说一次,就是如果你正在使用jQuery,这个例子。
当然,你可以用hook
和overwrite
这样的任何javascript函数。
由于Nick Craver
在评论中提到,还有其他几种jQuery方法,它们可以是add
或remove
元素类。你将不得不hook
所有这些,即:
.addClass()
.removeClass()
.toggleClass()
.removeAttr('class')
.attr('class', 'changed')
,除非你确切地知道哪些方法被调用来操纵一类,你就必须关心那些的。
我不认为这是可能的。
事件基于用户操作,所以点击,dblclick,mouseover等都是用户操作。
您可能要制定每个元素在某种数据块,然后建立一个小系统,集成到jQuery的.class()
和.attr()
方法,所以,当你的代码更新的一类,将数据添加到元件保持以前的类,
然后如果上一个类与正在设置的类不同,则触发您的事件。
我说的整合是
var old_ClassFunc = $.fn.class; //Save it
var $.fn.class = function()
{
if($(this).data('old-class'))
{
if($(this).data('class_callback'))#
{
$(this).data('class_callback')(this);
}
}
$(this).data('old-class',$(this).attr('class')); //Update Data
return old_class.apply(this,arguments);
}
那么你可以不喜欢
$('element').data('class_callback',function(context){
alert('Element class has changed');
})
希望这给你一些帮助
-1对于“事件基于用户操作” – sbichenko 2013-12-18 16:59:42
发生这种情况时,你想要做什么? – 2010-06-29 10:07:06