1

我正在使用 jquery 检查 div 元素内的字符串,但它总是返回 if 从不 else 即使当 dom 不包含 then $ 我犯了什么愚蠢的错误?

$('.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');
});
4

2 回答 2

9

因为$(".deatils.dailyPrice:contains($)")是一个对象而不是空对象总是像trueif测试中一样被评估。

来自MDN

任何非未定义、null、0、NaN 或空字符串 ("") 的值,以及任何对象,包括值为 false 的布尔对象,在传递给条件语句时计算结果为 true

你可能想要

if ($(".deatils.dailyPrice:contains($)").length) {
于 2013-08-13T19:45:03.183 回答
2

jQuery 函数构造一个 jQuery 对象。在诸如 的真实性评估中,对象总是被认为是真实的if

尝试这个

if( $(".deatils.dailyPrice:contains($)").length > 0 )
于 2013-08-13T19:44:28.777 回答