代码之家  ›  专栏  ›  技术社区  ›  Kyle

jQuery和标签

  •  3
  • Kyle  · 技术社区  · 14 年前

    在前面的问题中,我还有一个jquery事件,当复选框 单击标签本身。

    jsFiddle 这里是例子。

    我的问题是,当我单击标签时,它不会启动函数。如您所见,复选框工作正常。

    还有什么可以补充的吗?或者是这样吗?

    谢谢)


    编辑:jsFiddle链接中的代码

    HTML

    <div id="scrollwrap">
        <div>
           <input value="1"  type="checkbox" name="salgsvilkar" id="checkbox2"  style="float:left;"/>
            <label for="checkbox2" class="akslabel">Salgs og leveringsvilkår er lest og akseptert</label>
        </div>
    </div>
    

    JQuery

    $(function() {
        //checkbox
        $("#checkbox2, .akslabel").click(function() {
            $("#scrollwrap").toggleClass('highlight');
        });
    });
    
    2 回复  |  直到 14 年前
        1
  •  4
  •   Nick Craver    14 年前

    为了安全起见,您可以这样做:

    $(function() {
      $("#checkbox2").change(function(){
        $("#scrollwrap").toggleClass('highlight', this.checked);
      });
    }); 
    

    You can test it out here . 这里的优势是您可以添加 .change() 最后,要使状态与最初选中的状态匹配,如下所示:

    $(function() {
      $("#checkbox2").change(function(){
        $("#scrollwrap").toggleClass('highlight', this.checked);
      }).change();
    }); 
    

    You can test that version here . 你也可以做这个 许多的 更通用, like this .

        2
  •  2
  •   Mouhannad    14 年前

    应该这样做:

    $(function() {
       //checkbox
       $("#checkbox2").change(function(){
        $("#scrollwrap").toggleClass('highlight');
      });
    }); 
    

    它不起作用的原因 click() 是因为单击标签会触发事件两次,因为它附加到两个元素上——这意味着它将切换类名两次!