1

可能重复:
如果 id 不存在,为什么 $('#id') 返回 true?

我有一个非常简单的js函数:

function refresh(ltr) {
    if (board.find('p:contains("' + ltr + '")')) {
        board.find('p:contains("' + ltr + '")').show();
    } else {
        alert('Hello.');  
    }
}

显然我将一个字符串传递给 ltr,如果它包含该字符串,它可以正常工作,但如果不是,它不会触发警报......

你知道为什么吗?

4

2 回答 2

17

因为.find返回一个 jQuery 对象,它总是计算为true

尝试一个布尔表达式:

if( board.find('p:contains("' + ltr + '")').length > 0 ) 
于 2013-01-28T15:32:58.863 回答
5

board.find()将始终返回一个 jQuery 集合,该集合的评估结果为真。你需要:

board.find(...).length
于 2013-01-28T15:33:14.610 回答