这可能很简单,但是无法理解。
我们假设我有五十个类似的功能,其中有两个:
var unit = ['red', 'pink']
var unit2 = ['red2', 'red2']
$('#red').click(function() {
if($('#red2').is(':hidden')) {
$('#red2').toggle();
} else {
$('#red2').toggle();}}}
和
$('#pink').click(function() {
if($('#pink2').is(':hidden')) {
$('#pink2').toggle();
} else {
$('#pink').toggle();}}}
我希望将所有这些函数添加到一个/两个for循环中。 我试过这个:
for (var i = 0; i < unit.length; i++) {
for (var y = 0; y < unit2.length; y++) {
$('#i').click(function() {
if($('#y').is(':hidden')) {
$('#y').toggle();
} else {
$('#y').toggle();}}}}
答案 0 :(得分:2)
.toggle()
方法检测元素本身的可见性,不需要使用if
语句,您可以使用引用被点击元素的this
关键字:
$('#red, #pink').on('click', function() {
// Based on the id property of the clicked element
// this selects #red2 or #pink2 element
$('#' + this.id + '2').toggle();
});
另请注意,$('#i')
选择ID为i
的元素,您应该连接字符串:
$('#' + i).foo();
答案 1 :(得分:0)
你应该连接字符串:
for (var i = 0; i < unit.length; i++) {
$('#' + unit[i])
.attr('data-dst', unit2[i])
.click(function() {
var dst = $(this).attr('data-dst');
$('#' + dst).toogle();
}
}