0

我已经嵌套了没有标签属性的 HTML 标签和输入for=""标签,所以我不能只用一个 selecor 轻松检查标签:

<ul id="categorychecklist" data-wp-lists="list:category" class="categorychecklist form-no-clear">       
    <li id="category-6" class="popular-category"><label class="selectit"><input value="6" type="checkbox" name="post_category[]" id="in-category-6"> Action</label></li>
    <li id="category-7" class="popular-category"><label class="selectit"><input value="7" type="checkbox" name="post_category[]" id="in-category-7"> Adventure</label></li>
</ul>

我想检查 Label 是“ Action ”还是“ Adventure ”,然后检查其复选框输入。

任何帮助表示赞赏。

4

3 回答 3

2

$.trim($("li label").text())就是你要找的。这将使文本单独出现在label. 要检查其中包含Action或Adventure 的复选框您必须在标签/复选框上运行循环。我选择遍历标签。

$("li label").each(function (i) {
    //check if text has Action or adventure
    //this is equivalent to if($.trim($(this).text() === "Action" || $.trim($(this).text() === "Adventure")
    var isTrue = ["Action", "Adventure"].indexOf($.trim($(this).text())) != -1
    //search for the checkbox and change its property
    $("[type=checkbox]", this).prop("checked", isTrue);
});

演示:http: //jsfiddle.net/8w9SC/2/

于 2013-07-29T17:10:45.127 回答
1

你可以用不同的方式来做,不确定你需要什么。

如果您单击复选框

$('input[type=checkbox]').on('change', function (e) {
    var value = $(e.target).val();
    var name = $.trim($(e.target).parent().text());
});

或者如果你只是运行代码来寻找它

$('li label').each(function () {
    var name = $.trim($(this).text()); //name of the label
    var value = $(this).closest('li').val(); //value of the input of that label
});
于 2013-07-29T17:26:31.200 回答
0

假设您需要检查用户刚刚选中的复选框,这应该适合您:

jsFiddle

<script type="text/javascript">
    $(document).ready(function() {

        $('[id^=in-category]').click(function() {
            var xx = $(this).parent().text();
            alert(xx);
            var yy = $(this).is(':checked') ? 1 : 0;
            alert(yy);
        });

    }); //END $(document).ready()
</script>
于 2013-07-29T17:27:49.473 回答