循环访问名称列表并在单击侦听器上添加 Jquery
Loop over list of names and add Jquery on click listener
我正在尝试设置它,对于每个带有类country
的复选框,检查都会找到每个带有属性名称和div this
切换类的输入。它只对第一个输入起作用。
$(".country").each(function(){
var country_name = $(this).attr('name');
if(this.click) {
$("."+country_name).each(function() {
$( this ).toggleClass('hide');
});
}
});
<div id="country" class="form-group">
<label>Country</label><br>
<input class="country" id="Kenya" type="checkbox" value="Kenya" name="Kenya"> Kenya<br>
<input class="country" id="Uganda" type="checkbox" value="xxx" name="Uganda"> Uganda<br>
<input class="country" id="Tanzania" type="checkbox" value="xxx" name="Tanzania"> Tanzania<br>
</div>
<div id="destination" class="form-group">
<label>Destination</label><br>
<div class="Kenya"><input type="checkbox" value="xxx" name="des1"> Maasai Mara<br></div>
<div class="Kenya"><input type="checkbox" value="xxx" name="des2"> Serengeti<br></div>
<div class="Kenya"><input type="checkbox" value="xxx" name="des3"> KWS<br></div>
<div class="Uganda"><input type="checkbox" value="xxx" name="des1"> Maasai Mara<br></div>
<div class="Uganda"><input type="checkbox" value="xxx" name="des2"> Serengeti<br></div>
<div class="Uganda"><input type="checkbox" value="xxx" name="des3"> KWS<br></div>
<div class="Tanzania"><input type="checkbox" value="xxx" name="des1"> Maasai Mara<br></div>
<div class="Tanzania"><input type="checkbox" value="xxx" name="des2"> Serengeti<br></div>
<div class="Tanzania"><input type="checkbox" value="xxx" name="des3"> KWS<br></div>
</div>
简单地做:
$('input[type="checkbox"].country').on('click', function (){
var name = $.trim(this.name);
$('#destination div.' + name).toggleClass('hide');
});
$('.country').click(function () {
$('.' + $(this).attr('id')).toggleClass('hide');
// or $('.' + this.name).toggleClass('hide');
});
http://jsbin.com/sisawe/3/
以下是您将如何做到这一点
$(document).ready(function() {
$('.country').on('click', function() {
$('.' + this.name).toggleClass( 'hide' );
});
});
$(document).ready(function() {
$('.country').on('click', function() {
$('.' + this.name).toggleClass( 'hide' );
});
});
.hide {
display:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="country" class="form-group">
<label>Country</label><br>
<input class="country" id="Kenya" type="checkbox" value="Kenya" name="Kenya"> Kenya<br>
<input class="country" id="Uganda" type="checkbox" value="xxx" name="Uganda"> Uganda<br>
<input class="country" id="Tanzania" type="checkbox" value="xxx" name="Tanzania"> Tanzania<br>
</div>
<div id="destination" class="form-group">
<label>Destination</label><br>
<div class="Kenya"><input type="checkbox" value="xxx" name="des1"> Maasai Mara<br></div>
<div class="Kenya"><input type="checkbox" value="xxx" name="des2"> Serengeti<br></div>
<div class="Kenya"><input type="checkbox" value="xxx" name="des3"> KWS<br></div>
<div class="Uganda"><input type="checkbox" value="xxx" name="des1"> Maasai Mara<br></div>
<div class="Uganda"><input type="checkbox" value="xxx" name="des2"> Serengeti<br></div>
<div class="Uganda"><input type="checkbox" value="xxx" name="des3"> KWS<br></div>
<div class="Tanzania"><input type="checkbox" value="xxx" name="des1"> Maasai Mara<br></div>
<div class="Tanzania"><input type="checkbox" value="xxx" name="des2"> Serengeti<br></div>
<div class="Tanzania"><input type="checkbox" value="xxx" name="des3"> KWS<br></div>
</div>
但我认为这就是您的意图:
$(document).ready(function() {
$('.country').on('change', function() {
$('.' + this.name).toggleClass( 'hide', !this.checked );
})
.change();
});
$(document).ready(function() {
$('.country').on('change', function() {
$('.' + this.name).toggleClass( 'hide', !this.checked );
})
.change();
});
.hide {
display:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="country" class="form-group">
<label>Country</label><br>
<input class="country" id="Kenya" type="checkbox" value="Kenya" name="Kenya"> Kenya<br>
<input class="country" id="Uganda" type="checkbox" value="xxx" name="Uganda"> Uganda<br>
<input class="country" id="Tanzania" type="checkbox" value="xxx" name="Tanzania"> Tanzania<br>
</div>
<div id="destination" class="form-group">
<label>Destination</label><br>
<div class="Kenya"><input type="checkbox" value="xxx" name="des1"> Maasai Mara<br></div>
<div class="Kenya"><input type="checkbox" value="xxx" name="des2"> Serengeti<br></div>
<div class="Kenya"><input type="checkbox" value="xxx" name="des3"> KWS<br></div>
<div class="Uganda"><input type="checkbox" value="xxx" name="des1"> Maasai Mara<br></div>
<div class="Uganda"><input type="checkbox" value="xxx" name="des2"> Serengeti<br></div>
<div class="Uganda"><input type="checkbox" value="xxx" name="des3"> KWS<br></div>
<div class="Tanzania"><input type="checkbox" value="xxx" name="des1"> Maasai Mara<br></div>
<div class="Tanzania"><input type="checkbox" value="xxx" name="des2"> Serengeti<br></div>
<div class="Tanzania"><input type="checkbox" value="xxx" name="des3"> KWS<br></div>
</div>
可以将事件处理程序委托给包含div 的复选框,从而将处理程序附加到一个元素而不是多个元素。
也不需要"隐藏"类(除非它执行隐藏以外的其他操作)。请改用.hide()
和.show()
。
详细地说:
$("#country").on('change', 'input', function() {
var country = $(this).attr('name');
if(this.checked) {
$("#destination div." + country).show();
} else {
$("#destination div." + country).hide();
}
}).find('input').trigger('change');
演示
或简明扼要:
$("#country").on('change', 'input', function () {
$("#destination div." + $(this).attr('name'))[['hide', 'show'][+this.checked]]();
}).find('input').trigger('change');
演示
相关文章:
- 如果侦听器附加到父元素,是否可以区分单击发生在哪个子元素上
- 谷歌地图v3侦听器(单击)-更改URL
- 为左键或右键单击附加事件侦听器-onclick'右键单击无效
- 单击时的Javascript事件侦听器未按预期工作
- 单击“ExtJS”中的“事件/侦听器”
- 关闭菜单,单击带有事件侦听器和父节点的正文
- Ext JS,项目单击侦听器似乎不起作用
- 在“JQuery 模式”对话框中指定图像单击侦听器
- Javascript 单击侦听器获取类
- 单击事件侦听器关闭困难
- 事件侦听器单击不起作用
- 如何使用 href 并单击侦听器进行收集
- 事件侦听器在单击/提交时未触发
- 单击链接时的 Javascript 操作顺序 - 链接启动或附加到 id 的侦听器触发
- 阻止 JQuery 单击侦听器
- Jquery (2.2.0) 单击侦听器在使用 .on() 时单击几下后停止工作,但 .click() 工作正常
- j查询输入按钮单击事件侦听器
- 侦听器单击任何元素并读取特定的 HTML-5 自定义属性(如果存在)
- 如何在事件侦听器单击后将ID传递给函数
- 谷歌地图标记事件侦听器点击