0

これは単純なことかもしれませんが、それを理解することはできません。

同様の関数が 50 個あり、そのうちの 2 つがあるとします。

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();}}}

そして、これらすべての関数を 1 つまたは 2 つの 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();}}}}
4

2 に答える 2

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();
于 2013-09-29T21:31:09.100 に答える
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();
  }
}
于 2013-09-29T21:31:00.030 に答える