首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重构jquery以传递jquery-lint

重构jquery以传递jquery-lint
EN

Stack Overflow用户
提问于 2010-11-08 10:11:25
回答 2查看 304关注 0票数 2

我在html页面中有以下代码

代码语言:javascript
复制
jQuery("input[name='newstate']").change(function(){
    if(jQuery(this).attr("checked")) {
        jQuery('input[name="new-state-name"]').show();
    } else {
        jQuery('input[name="new-state-name"]').hide();
    }
});

但是jquery给出了以下信息。

,当您知道返回的集合将有所不同时,应该只使用同一选择器多次。例如,如果您向页面中添加了更多可能符合选择器的元素

如何修改代码以删除此消息

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-08 10:20:25

.toggle()方法接受showOrHide的布尔值

代码语言:javascript
复制
jQuery("input[name='newstate']").change(function(){
    // You can use this.checked instead of jQuery(this).attr("checked");
    jQuery('input[name="new-state-name"]').toggle(this.checked);
});

这样,您就会知道new-state-name输入的显示状态总是与newstate输入相匹配(也就是说,它将在选中时显示,而不考虑它以前的状态)。我的意思是,使用没有toggle()showOrHide,如果newstate输入的显示状态是从newstate change()处理程序外部操作的,则可能会使newstate状态和new-state-name显示状态不同步。

当然,您也可以将结果集赋值给一个临时变量,以便只执行一次选择器:

代码语言:javascript
复制
jQuery("input[name='newstate']").change(function(){
    var newStateInput = jQuery('input[name="new-state-name"]');
    if(this.checked) {
        newStateInput.show();
        // ... more here
    } else {
        newStateInput.hide();
        // ... and/or here
    }
});

如果你想做的不仅仅是展示/隐藏。

编辑

哦,很不幸的错误。在第一个解决方案中,show()应该是toggle()

票数 3
EN

Stack Overflow用户

发布于 2010-11-08 10:15:07

代码语言:javascript
复制
jQuery("input[name='newstate']").change(function(){
      jQuery('input[name="new-state-name"]').toggle();
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4122891

复制
相关文章

相似问题

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