.hasClass("className"):有關.hasClass()方法可以查閱jQuery API——hasClass()
.is(".className"):有關.is()方法可以查閱jQuery API——is()
下面我們先來簡單看一下他們的用法
hasClass()方法是用來檢查被選擇的元素是否包含指定的class名,其語法:
$(selector).hasClass("className");//其中class是必須的值,規(guī)定需要在指定元素中查找的類名。hasClass()也可以同時寫多個class但他們之前用空格隔開,如下:
$(selector).hasClass("className1 className2");二、.is()
is()方法也是用來檢查被選擇的元素是否包含指定的class名,其用法為:
$(selector).is(".className");同樣is()也可以有多個類名的寫法,如:
$(selector).is(".className,.className");
有關于他們更詳細的用法,大家可以查看這里:jQuery API——hasClass()、jQuery API——is()。下面我們一起來看一個實例:
如果div元素有一個類名叫"bgRed",那么我們給其加上背景色為紅色,如明沒有這個類名,我將背景色設置為藍色,我們一起來看代碼:
HTML Code:
<div class="bgRed">有類名"bgRed"</div><div>無類名“bgRed”</div><div>無類名“bgRed”</div><div class="bgRed">有類名"bgRed"</div><p> <button id="isTest">is('.bgRed')</button> <button id="hasClassTest">hasClass('.bgRed')</button> <button id="reset">reset</button></p>jQuery Code:
//.is()$("#isTest").click(function(){ var $divTest = $(".demoTest div"); $divTest.each(function(){ if($(this).is(".bgRed")){ $(this).css("background-color","red"); } else { $(this).css("background-color","blue"); } });});
//.hasClass()$("#hasClassTest").click(function(){ var $divTest = $(".demoTest div"); $divTest.each(function(){ if($(this).hasClass("bgRed")){ $(this).css("background-color","red"); } else { $(this).css("background-color","blue"); } });});
//reset$("#reset").click(function(){ location.reload();});
效果:
上面兩種方法最終效果都是一樣的。但從性能的角度來說,hasClass()要比is()更快,我們來做一個測試:
結果是:usingIs()用時3191.663ms,而usingHasClass()用時2362.523ms。你也可以在 這里改變測試條件進行測試。function usingIs(){ for(var i=0; i<10000;i++){ $("div#testDiv").is(".test"); }}function usingHasClass(){ for(var i=0; i<10000;i++){ $("div#testDiv").hasClass("test"); }}
usingIs();usingHasClass();
最后在總結一下:
雖然.is()和.hasClass()兩種方法都能用來檢查一個元素是否具有某些特定的類名,但性能上來說,.hasClass()方法要更強,所以在實際運用中我們可以盡量使用.hasClass()方法來檢查一個元素是否具有某些特定的類名。換句簡單的話說:.is()和.hasClass()功能一樣,但.hasClass()性能方面強于.is()。