嗨我有这段代码用于显示和隐藏元素的选择选项,它适用于1个元素,但如果我使用更多的元素它不再正常工作。我如何修改它以使其适用于每个元素?
$(document).ready(function (e) {
var $targets = $(".open_times");
$(".pr_opener").change(function () {
var i = $('option:selected', this).index();
$targets.show().eq(i).hide();
});
});
答案 0 :(得分:1)
请参阅此demo
$(document).ready(function (e) {
var $targets = $(".open_times");
$(".pr_opener").change(function () {
var i = $('option:selected', this).text();
if (i=='Open') {
$(this).closest("li").next(".open_times").show();
} else {
$(this).closest("li").next(".open_times").hide();
}
});
});
答案 1 :(得分:0)
您可以将其简化为:
$(".pr_opener").change(function () {
$(this).parent().next('div.open_times').toggle( this.value == 'Open' );
});
此外,您需要修复标记(您没有正确关闭任何<select>
元素)
答案 2 :(得分:0)
让事件传播到ul
然后处理它。
$(document).ready(function (e) {
$("#pr_times ul").on("change",function () {
$(".open_times", this).toggle();
});
});
JS小提琴: http://jsfiddle.net/6yv4g/5/