我正在使用jquery检查div元素中的字符串,但它总是返回if if else else,即使dom不包含那么$我犯的是什么愚蠢的错误?
$('.bw-switcher').on('click', function() {
$(this).toggleClass('toggledrate', 1000);
$('.toggledrate > .bwswitch-button:before').toggle('fast');
$('.toggle_rates').toggle('fast');
if ($(".deatils.dailyPrice:contains($)")) {
$('.deatils.dailyPrice').toggle('fast');
console.log('I am the if');
} else {
console.log('I am the else');
$('.deatils.dailyPrice').toggle('fast').prepend('$');
}
$('.toggledrate > .bwswitch-button:after').toggle('fast');
});
答案 0 :(得分:9)
因为$(".deatils.dailyPrice:contains($)")
是一个对象,而且true
测试中的空对象总是被评估为if
。
来自the MDN:
任何未定义的值,null,0,NaN或空字符串 (“”)和任何对象,包括值为false的布尔对象, 传递给条件语句时评估为true
你可能想要
if ($(".deatils.dailyPrice:contains($)").length) {
答案 1 :(得分:2)
jQuery函数构造一个jQuery对象。在真实性评估中,对象始终被认为是真实的,例如if
。
试试这个
if( $(".deatils.dailyPrice:contains($)").length > 0 )