當元素類發生更改時,是否有方法在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