var searchString = '<strong>Applicable Discounts:</strong>';
if ($(".cobhl td:contains('" + searchString + "')")) {
$("#shipoptionstable td:contains('Free')").remove();
} else {
alert("do nothing!");
};
由于某种原因,即使没有满足if条件,函数也在运行并删除shipoptionstable类表行?有什么建议?我很难过!
答案 0 :(得分:2)
两点:首先,无论$(".cobhl td:contains('" + searchString + "')")
的值如何,searchString
的结果总是是一个jQuery对象。实际上,即使DOM不包含具有类cobhl
的元素,或者它确实存在,但该元素没有后代td元素,它仍然会返回一个jQuery对象。
接下来,非空的,未定义的对象是“真实的”,意味着它实际上没有布尔值true
,但它确实为了if子句的目的而评估为真。
您实际想要测试的是返回的jQuery对象是否具有非零长度。例如:
if ($(".cobhl td:contains('" + searchString + "')").length > 0) {
...
<强>更新强> 将以下值写入控制台将有助于您进一步调试问题:
console.log("number of .cobhl elements: " + $(".cobhl").length);
console.log("number of .cobhl td elements: " + $(".cobhl td").length);
console.log("number of .cobhl td:contains('" + searchString + "') elements: " + $(".cobhl td:contains('" + searchString + "')").length);
检查这些语句的输出。您是否使用.cobhl选择器?如果是,那下面的任何td元素?如果是,searchString值是否符合预期?
通常情况下,在这种情况下,我发现选择器链上的拼写错误。这种分解选择器的技术有助于我找到它。
答案 1 :(得分:0)
我能够弄明白!有时你只需要离开一点!今天早上回来,几分钟内解决了!
<script>
var item = $('.cobhlappdisc');
for (var i = 0; i <= item.length; i++) {
if ($(item[i]).text() == 'Applicable Discounts:') {
alert("Did Stuff")
}else{
alert("Nope")
}
}
</script>