复选框唯一 ID 与样式脚本冲突

checkbox unique id conflict with script for styling

这是我想要实现的风格:http://jsfiddle.net/f07t3qkn/

我当前的复选框具有相同的 ID,即 'level'。下面有一个脚本可以识别执行特定任务的 id(level),所以我不能有唯一的 id。

然而,在我想要实现的复选框样式中,每个 ID 都是唯一的 checkbox.This 是缺点,因为如果实现了复选框样式,它不允许脚本运行。

现在,如何更改脚本,以便它可以允许复选框的唯一 ID 以实现样式设置以及执行该功能。

或者脚本有没有办法识别复选框,其 ID 以单词 'level' 开头,而不是像 'level' 这样的固定 ID?如果可以的话,也许我可以使用像 'level_1'、'level_2' 这样的 id。...我已经厌倦了尝试这个...确切的代码会提前非常 helpful.Thanks。

我当前 HTML 的复选框

<ul class="box small-block-grid-1 medium-block-grid-2 large-block-grid-2">
                  <li><input type="checkbox" name="level[Primary]" id="level" class="level" value="1"><label>Primary</label></li>
                  <li><input type="checkbox" name="level[Upper Secondary]" id="level" class="level" value="3"><label>Upper Secondary</label></li>
                  <li><input type="checkbox" name="level[University]" id="level" class="level" value="5"><label>University</label></li>
                  <li><input type="checkbox" name="level[Lower Secondary]" id="level" class="level" value="2"><label>Lower Secondary</label></li>
                  <li><input type="checkbox" name="level[Pre University]" id="level" class="level" value="4"><label>Pre University</label></li>
                  <li><input type="checkbox" name="level[Other]" id="level" class="level" value="6"><label>Other</label></li>                 
              </ul>

利用id执行其他任务的脚本

<script>
       $("#slider1").change(function() {
       var value = $(this).val();
       sendtobox(value, $("input[type=checkbox]#level").val());
      });

    $("input[type=checkbox]#level").change(function() {  
     var selectedval = $(this).val();
     if($(this).is(":checked")) {
        var selectedtext = $(this).next().text();
        sendtobox(selectedval, $("#slider1").val());
     }
      else {
        $("th."+selectedval).remove();//controls removing from boxA

     }
    });
</script>

有几种方法可以解决您的问题:

  1. 在您的脚本中,当您想要引用多个元素时,您应该引用 class 而不是 ID,因为每个元素的 ID 应该是唯一的。

  2. 您可以为每个复选框添加另一个 ID。示例:id="level first_checkbox"

我相信还有更多方法,但我相信这足以解决您的问题。

如其他答案所述,id 属性必须是唯一的。

就是说,您可以使用基于 attribute selector 的表达式 select CSS(和 jQuery)中的相似 classes 或 id 值。 =23=]

因此,如果您将 id 值更改为例如level1level2level3..您可以 select CSS 中的所有匹配元素使用:

input[type=checkbox][id^=level]{

}

的,在jQuery,使用:

$("input[type=checkbox][id^=level]")

[attr^=value] Represents an element with an attribute name of attr and whose value is prefixed by "value".

也就是说,请注意,基于表达式的 selectors 不如常见的 selectors 有效。通常建议为每个应该共享相同样式的项目提供相同的 class,然后 select/style 这个 class 相应地。

考虑到这一点,并考虑到相关复选框都有 class level,更改

input[type=checkbox]#level

在你的 jQuery 中:

input[type=checkbox].level

那么就不需要重复的 id 值了。