JQuery:检查所有<div>或<span>是否包含特定文本</span> </div>

时间:2013-10-07 19:48:43

标签: javascript jquery html css if-statement

我在运行时生成几个框,我想确认所有框是否包含文本“Empty”,然后用户不能继续。但即使一个Box包含正确的box值(而不是Empty),用户也应该可以继续。

请在下面找到我的代码:

HTML

<div>
    <div class="bin-area empty floatLeft" style="width:242px; height:130px; ">
        <label for="9">
            <div class="bin" data-binid="0" data-cols="0" data-rows="0">
                <div class="number">S9</div>
                <input class="floatLeft styled" id="9" name="checkbox9" type="checkbox" />
                <label for="9"><span class="floatLeft marginLeft40">Empty</span>

                </label>
                <div class="type"></div>
                <div class="description">Storage</div>
            </div>
        </label>
    </div>
    <div class="bin-area empty floatLeft" style="width:242px; height:130px; ">
        <label for="9">
            <div class="bin" data-binid="0" data-cols="0" data-rows="0">
                <div class="number">S9</div>
                <input class="floatLeft styled" id="9" name="checkbox9" type="checkbox" />
                <label for="9"><span class="floatLeft marginLeft40">Empty</span>

                </label>
                <div class="type"></div>
                <div class="description">Storage</div>
            </div>
        </label>
    </div>
    <div class="bin-area" style=" width:242px; height:130px; ">
        <label for="8">
            <div class="bin" data-binid="5" data-cols="9" data-rows="5">
                <div class="number">S8</div>
                <input class="floatLeft styled" id="8" name="checkbox8" type="checkbox" />
                <div class="type">9x5 Storage Bin</div>
                <div class="description">Est. Capacity: 121 pkgs</div>
            </div>
        </label>
    </div>
</div>
<div style="clear:both"></div>
<div role="button" style="margin-top:20px">
    <input type="button" id="stepAutomap" value="Automap" class="active" />
    <input type="button" id="stepAutomapBack" value="Back" class="active marginLeft50" />
    <input type="button" id="stepAutomapConfirm" value="Confirm &amp; Proceed" class="marginLeft10" />
</div>

这是我的HTML结构...通过搜索一些现有帖子,我尝试使用JQuery创建一些IF逻辑:

我尝试了这个选项:

$(document).ready(function () {
    $('.bin-area').each(function () {
        if ($(this).text() == 'Empty') {
            alert("Empty");
        }
    });
});

这个选项:

$(document).ready(function () {
    if ($("span.floatLeft").contains("Empty")) {
        alert("Empty");
    }
});

但没有任何效果!

我也创造了一个小提琴来推荐或尝试!

请参阅小提琴: http://jsfiddle.net/aasthatuteja/xJtAV/

如果您需要任何其他信息,请与我们联系。

请建议!

5 个答案:

答案 0 :(得分:5)

如果你想要做的事情,如果至少有一个方框包含&#34;空&#34;以外的东西,你就不需要每个功能。就这样做:

if ($('.bin-area').length === $('.bin-area:contains("Empty")').length) {
    alert("Do nothing");
}
else {
    alert("Do something");
}

答案 1 :(得分:4)

您可以使用{/ 3}}选择器,如

 $('.bin-area:contains("Empty")')

修改后的代码

$('.bin-area:contains("Empty")').each(function () {
    alert("Empty");
});

.contains()

答案 2 :(得分:2)

在您的jsfiddle示例中,使用.find('span')之前的.text()

if ($(this).find('span').text() === 'Empty') {

答案 3 :(得分:1)

我建议:

var els = $('.bin-area');
if (els.filter(function(){
    return $(this).text().indexOf('Empty') === -1;
}).length == els.length) {
    console.log('none of the divs contain "Empty".');
}
else {
    console.log('At least one of the divs contains "Empty".');
}

缓存元素:

var els = $('.bin-area');

比较在其文本中包含单词'Empty'的元素数量与(先前缓存的)元素的数量:

els.filter(function(){
    return $(this).text().indexOf('Empty') === -1;
}).length == els.length) {

如果长度相同,则.bin-area个元素不包含单词'Empty',因此请执行以下操作:

console.log('none of the divs contain "Empty".');

否则,中的至少一个元素必须在某处包含单词'Empty',因此处理:

else {
    console.log('At least one of the divs contains "Empty".');
}

答案 4 :(得分:0)

.html()属性从HTML标记之间返回值,我使用find()进入并找到要在每次迭代中检查的正确元素。这对我有用:

$(document).ready(function () {
    $('.bin-area').each(function () {
        if ($(this).find('span.floatLeft').html() == 'Empty') {
            alert("Empty");
        }
    });
});

http://jsfiddle.net/xJtAV/8/