jquery中hover和blur使用delegate失效的解決辦法
阿新 • • 發佈:2019-02-16
我想要實現,動態生成的span,再繫結hover事件,使得懸浮到span上時出現放大鏡圖片
結果遇到了
$("#jnBrandList").delegate(".imageMask", "hover", function(){
$(this).toggleClass("imageOver");
});
就是不執行的情況。
一開始以為是我使用的jquery不支援delegate動態繫結事件,但是jquery1.8以後是支援的,所以排除。
後來看到了這篇部落格http://www.thinksaas.cn/topics/0/455/455142.html 說delegate失效的原因是要繫結的事件不支援事件冒泡,而因為delegate原理是依靠事件冒泡處理的所以delegate會失效。於是,想到可能的事件的原因,後來查到原因。是jquery1.9之後,因為hover、blur不是標準的事件,因此無法直接使用live和delegate進行處理。可以用mouseenter和mouseleave代替。 果然問題解決了。
$("#jnBrandList").delegate(".imageMask", "mouseenter mouseleave", function(){
$(this).toggleClass("imageOver");
});