jQuery:迭代子项和布尔值

时间:2012-08-30 02:08:58

标签: jquery boolean each

如果父td中的每个.itemToFilter子节点都未通过测试(因此返回全部为TRUE),则应执行alert('hello world')。但事实并非如此!

第一个IF语句工作正常,我已经通过警报对其进行了测试。但不是第二个。

var businessTypePullDownValue = $('.businessTypePullDown').val();

$('.businessTypeRow td').each( function() {

    var foundOne = $(this).children('.itemToFilter').each( function() {                

        if(($(this).attr('value') == businessTypePullDownValue)) {
            return true; 
        }
    });

    if(!foundOne) {
        alert('hello world');
    }

});​

2 个答案:

答案 0 :(得分:3)

true内返回each只会继续下一次迭代。你需要做这样的事情:

var foundOne = false;

$(this).children('.itemToFilter').each( function() {                

    if(($(this).attr('value') == businessTypePullDownValue)) {
        foundOne = true;
        return false;  // break the loop
    }
});

if(!foundOne) {
    alert('hello world');
}

答案 1 :(得分:1)

$('.businessTypeRow td').each( function() {
    // get child element which class is itemToFilter and
    // value equals to businessTypePullDownValue
    var $elements = $('.itemToFilter[value="' + businessTypePullDownValue + '"]', this);

    if($elements.length > 0) {
        alert('Hello world');
    }
});