【问题标题】:how to find a number inside an id and check the checkbox with jquery如何在 id 中查找数字并使用 jquery 选中复选框
【发布时间】:2012-11-18 00:14:05
【问题描述】:

这可能有点令人困惑,但它就是这样。我有第一组这样的复选框:

<input type="checkbox" id="quick" value="6" />
<input type="checkbox" id="quick" value="3" />

还有第二组这样的复选框:

<div class="check1"><input type="checkbox" id="1,3,4" value="6" /></div>
<div class="check1"><input type="checkbox" id="1" value="6" /></div>
<div class="check1"><input type="checkbox" id="6,4" value="6" /></div>

我需要获取第一个复选框的值并检查该值是否存在于第二组复选框的 id 数组中,并检查它们是否返回 true。这是我到目前为止所拥有的,但它不起作用:

$('#quick').click(function(){
        var perId = $(this).val();
        $('#check1 input[type="checkbox"]').attr('id').find(perId).attr('checked', true);
        });

有没有人知道如何做到这一点?任何帮助将不胜感激!

【问题讨论】:

  • 同一页面上的两个元素不应共享相同的 ID。而且“1,3,4”(尽管在 HTML5 下是合法的)也不是一个合适的 ID 值。
  • 我同意这不是一个有效的 id,也许我可以把它放在一个类元素中。我从 mysql 得到这个数组。
  • 您是否考虑过使用data- 属性代替?
  • 确定我会尽一切努力,但请你帮我实现我想要做的事情吗?谢谢
  • @liveandream:使用data-id="1,2,3" 并使用.data('id') 访问它。 PS:它是否存储为1,2,3 - 数据库中的逗号分隔字符串?如果没有,并且您有 php 数组-那么最好使用json_encode 将其序列化为 json,jquery 将为您解码它

标签: jquery arrays find checkbox


【解决方案1】:

我改变了一些东西以使代码更合理(如果我破坏了任何东西,请告诉我)。

  1. “快速”复选框的 ID 已被移除,并替换为通用名称。
  2. .check1 中的各种复选框的 id 值已转换为 data-set 属性。
<input type="checkbox" name="quick" value="6" />
<input type="checkbox" name="quick" value="3" />

<div class="check1">
    <input type="checkbox" data-set="1,3,4" value="6" />
    <input type="checkbox" data-set="1,3"   value="6" />
    <input type="checkbox" data-set="6,4"   value="6" />
</div>​
$(function () {

    "use strict";

    var $quick = $("[name=quick]"),
        $dSets = $(".check1 :checkbox");

    // We've changed a checkbox
    $quick.on("change", function () {
        // Uncheck all data-set elements
        $dSets.prop("checked", false);
        // Run through all checked quick elements
        $quick.filter(":checked").each(function (index, quick) {
            // Determine whether each data set element should be checked
            $dSets.prop("checked", function () {
                // Get array of values
                var set = $(this).data("set").toString().split(",");
                // Should this box be checked
                return this.checked || $.inArray(quick.value, set) > -1;
            });
        });
    });

});

小提琴:http://jsfiddle.net/u2q8P/4/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-05
    • 2016-09-09
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多