为什么这总是返回true?

时间:2013-08-13 19:43:34

标签: javascript jquery

我正在使用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');
});

2 个答案:

答案 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 )