jQuery:hasClass部分匹配
问题描述:
使用Attribute Contains Word Selector时是否应该评估为true?我试图在if/else语句中使用它,如下所示,它不计算为真。jQuery:hasClass部分匹配
<li class="orange blue">
<div class="answer">Some Content</div>
</li>
<input type="button" name="yellow" value="yellow" class="yellow" />
<br />
<input type="text" value="" class="result" />
$("input.yellow").click(function() {
if ($("div.answer").parent().hasClass($("[class~='bl']")) == true){
$("input.result").val("has class");
} else {
$("div.answer").parent().addClass("blue");
$("input.result").val("class added")
};
});
答
正如评论建议,hasClass
发生在一个string
。所以你可以使用is
: -
if ($("div.answer").parent().is($("[class~='bl']"))){
,或者你可以创建一个小的jQuery插件: -
$.fn.hasPartialClass = function(partial){
return new RegExp(partial).test(this.prop('class'));
};
和使用,如: -
if ($("div.answer").parent().hasPartialClass("bl")){
答
你忘了你使用的是“属性包含字选择器” 因此,这个选择器要匹配,你必须使用[class~='blue']
。 您不能使用[class~='bl']
,因为class属性不包含单词'bl',而是单词'blue'。
使用这种选择方式:
$("input.yellow").click(function() {
if ($("div.answer").parent().is("[class~='blue']")){
$("input.result").val("has class");
} else {
$("div.answer").parent().addClass("blue");
$("input.result").val("class added")
};
});
呃,hasClass接受字符串。你给它一个jQuery对象。 – Taplar
你可能会考虑使用filter().length。或者是()。 .is(“[class〜='bl']”) – Taplar
谢谢,我会试试。我是jQuery/javascript的新手。 – pn03