1

可能重复:
如果元素包含某些文本

我有这个(更新的) html:

<div>
    <div class="checkBox">
        <input type="checkbox" name="toppings" class="NS" value="n"  />
    </div>
    No Sauce                    
</div>

<div>
    <div class="checkBox">
        <input type="checkbox" name="toppings" class="NC" value="x"  />
    </div>
    No Cheese                    
</div>

<div>
    <div class="checkBox checkBoxSelected">
        <input type="checkbox" name="toppings" class="no_submit" checked="checked" value=""  />
    </div>
    Regular Cheese                    
</div>

<div>
    <div class="checkBox">
        <input type="checkbox" name="toppings" class="no_submit" value=""  />
    </div>
    Regular Sauce                    
</div>

我如何(通过 jquery)获取包含文本“Regular Cheese”的 div 内的输入类型?

我知道我可以得到这样的所有复选框:

$("input.no_submit:checkbox")

而且我知道,如果我想影响项目的父 div,我可以这样做:

$("input.no_submit:checkbox").parent("div").removeClass("checkBoxSelected");

我可以得到这样的实际文本:

​var myText = $("div").text();

但我不知道如何组合它们,以便我可以设置一个指向嵌套 div 内的实际输入元素的 var,该嵌套 div 本身位于无类 div 内,其文本是特定字符串。

4

3 回答 3

1

或者这里有点不同的演示:http: :) //jsfiddle.net/NBGBP/

希望能满足需求!

代码

$(document).ready(function() {
    $('.no_submit').click(function() {

        if ($(this).is(':checked')){
            alert('Div text ==> ' + $(this).parents('div').text());   
        }

    });
});​
于 2012-10-17T20:14:18.383 回答
1

您可以使用 :contains() 进行过滤以查找“Regular Cheese”文本。将其分离为过滤器而不是执行 div:contains 将是一个更快的选择器。然后,您想要找到父 div 中的输入并打印出它的类型。

$("div").filter(":contains('Regular Cheese')")
    .find("input.no_submit").prop("type");

http://jsfiddle.net/ZeSdV/1/

于 2012-10-17T20:18:58.427 回答
0

尝试这个

$('div:contains("Regular Cheese") input.no_submit') 

参考:

包含 - http://api.jquery.com/contains-selector/

演示:http: //jsfiddle.net/Fs9tK/

于 2012-10-17T20:14:13.023 回答