首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为复选框优化jQuery小脚本

为复选框优化jQuery小脚本
EN

Stack Overflow用户
提问于 2011-06-28 08:31:36
回答 3查看 190关注 0票数 0

我做了一个小的验证脚本,应该是这样的:我有4个复选框,一个有特定的操作方式,这个复选框的id是chx0。

  • 如果我选中了chx0复选框,那么它会释放所有其他复选框。
  • 如果我选中了其他所有复选框中的一个,那么它就释放了chx0复选框。

这是我的代码:

代码语言:javascript
复制
<script type="text/javascript"> 
    
    $(document).ready(function() {
        $('#chx0').click(function() { // click on the chx0 checkbox
           
            if ($('#chx0').attr('checked')) {
                
                $('#chx1').attr('checked', false);
                $('#chx2').attr('checked', false);
                $('#chx3').attr('checked', false);
            }
        });
    
        $('#chx1').click(function() {// click on the chx1 checkbox
           
            if ($('#chx1').attr('checked')) {
                $('#chx0').attr('checked', false);
            }
        });
    
        $('#chx2').click(function() { // click on the chx2 checkbox
           
            if ($('#chx2').attr('checked')) {
                $('#chx0').attr('checked', false);
            }
        });
    
        $('#chx3').click(function() { // click on the chx3 checkbox
           
            if ($('#chx3').attr('checked')) {
                $('#chx0').attr('checked', false);
            }
        });

    });
    
</script> 

这段代码运行得很好,只是为了得到更好的实践!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-28 08:50:51

我会在每个复选框上加一个类

代码语言:javascript
复制
<input type="checkbox" name="chx0" id="chx0" class="checkbox-group singleton">
<label for="chx0">Check me out!</label>
<input type="checkbox" name="chx1" id="chx1" class="checkbox-group">
<label for="chx1">Check us out!</label>
<input type="checkbox" name="chx2" id="chx2" class="checkbox-group">
<label for="chx2">Check them out!</label>

然后用你的jQuery你可以做

代码语言:javascript
复制
$('input.checkbox-group').each( function() {
    $(this).click( function() {
        if ( $(this).hasClass('singleton') ) {
            $('input.checkbox-group:checked').removeAttr('checked');
        } else {
            $('input.checkbox-group.singleton').removeAttr('checked');
        }
    };   
});

还没经过测试,但我认为这样的方法应该能起作用。我不记得使用更改事件是否比单击更好。

票数 5
EN

Stack Overflow用户

发布于 2011-06-28 08:35:48

可以将所有单个复选框的子句组合起来,如下所示

代码语言:javascript
复制
$('#chx1','#chx2','#chx3').click(function() {
    if ($(this).attr('checked')) {
        $('#chx0').attr('checked', false);
    }
});

而不是每个复选框一个。在"chx0“中,也可以使用$(this)代替$('#chx0')。

票数 3
EN

Stack Overflow用户

发布于 2011-06-28 08:56:37

我想出了一个类似于ianbarker的东西。与其假设依赖关系是全部或全部,不如使用自定义数据标记来列出依赖项。

一个有用的例子是在这里玩小提琴

代码语言:javascript
复制
$('.luckyChecks').click(function() { // click on ANY lucky checkbox
    var $t = $(this);
    if($t.attr('checked')){
        var clear = $t.attr("data-clear").split(",");
        for(var i=0; i < clear.length; i++){
            $('#'+clear[i]).attr('checked',false);
        }
    }
});

HTML:

代码语言:javascript
复制
<input type="checkbox" id="chx0" class="luckyChecks" data-clear="chx1,chx2,chx3" /> 
Diamonds <br />
<input type="checkbox" id="chx1" class="luckyChecks" data-clear="chx0"/> 
Clovers <br />
...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6503703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档