我在html页面中有以下代码
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 lint给出了以下消息。
当您知道返回的集合不同时,您应该只使用同一个选择器多次。例如,如果您向页面添加了更多符合选择器的元素
如何修改我的代码以删除此消息
答案 0 :(得分:3)
.toggle()
方法接受showOrHide
的布尔值:
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()
的{{1}},则可能会导致showOrHide
状态和newstate
显示状态不同步,例如new-state-name
输入的显示状态由new-state-name
newstate
处理程序外部操纵。
当然,您也可以将结果集分配给临时变量,以便只执行一次选择器:
change()
如果您打算做的不仅仅是显示/隐藏。
修改强>
哎呀,不幸的错字。 <{1}}在第一个解决方案中应为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
}
});
。
答案 1 :(得分:1)
jQuery("input[name='newstate']").change(function(){
jQuery('input[name="new-state-name"]').toggle();
});