2017-06-02 7 views
0

これを実行しようとしていますが、ループは最初のトリガー後に終了します。私を助けるどんなアイデアですか?jQueryトリガークリックインループが最初の後に停止します

$(document).on('click', '#configurator .myalbumimgs .autofill', function(e) { 

    e.preventDefault(); 

    var nb_of_images = $('#grid div.configimg').length; 

    for (i = 0; i < nb_of_images; i++) { 

     alert(i); 

     $('.imgpicker .photo .add').eq(i).trigger('click'); 
    } 

}); 

編集1:私は$を削除する場合はすべてが正常に動作します( 'imgpicker .photo .add ')EQ(I).trigger(' クリック');ループを実行させてください。

数字を入力すると、eq(3)のように数字が1つだけ選択されますが、その数字だけが選択されます。それまでと同じように停止します。

コンソールでエラーなし:S

編集2:間違った要素の.EQと正解、私のミスを見つけました。すべての提案ありがとう!正しいコード:

$(document).on('click', '#configurator .myalbumimgs .autofill', function(e) { 

    e.preventDefault(); 

    if ($(this).not('.done')) { 

     var multiselector_nbimages = $('#grid').attr('data-nbimages'); 

     var nb_images_selected = parseInt($('#grid div.configimg').not('.temp').length); 
     var max_nb_images = parseInt(multiselector_nbimages); 

     if (nb_images_selected < max_nb_images) { 

      var album_images = $(this).parent().parent().children('.imgpicker').children('.photo'); 
      var nb_of_grid_images = $('#grid div.configimg.temp').length; 

      for (i = 0; i < nb_of_grid_images; i++) { 

       album_images.eq(i).children('.add').not('.selected').trigger('click');; 
      } 

      $(this).addClass('done'); 

     } else { 

      alert(lang_valid_max_nb_of_photos); 
     } 

    } 

}); 
+4

@アレクサンダーの長さは、プロテクタです... –

+2

コンソールのエラーをチェックしてください。それはおそらくエラー –

+0

のために壊れています。コンソールエラーです。ループで0から始まり、1からの長さのカウントであるので、.length -1を実行する必要があります。 – noitse

答えて

-2

jqueryが各メソッドに組み込まれています。

$('#configurator .albumbtn.autofill').on('click', function(e) { 

e.preventDefault(); 

//Iterate through every configimg 
$('#grid div.configimg').each(function(el) { 
// $(this) is current element in the list 
    if($(this).hasClass('someclass')) { $(this).trigger('click') } 
}) 

});たぶん「i」は変数は何とかEQ機能によって操作される

for (var i = 0; i < nb_of_images; i++) { 
    (function(i) { 
    alert(i); 
    $('.imgpicker .photo .add').eq(i).trigger('click'); 
    })(i); 
} 

-1

は、このような閉鎖でループ本体をwraping試してみてください。

+0

@アレクサンダー、私はあなたのポイントを取得しません。 –

+0

@Alexander、各反復のために新しい実行コンテキストを作成し、インデックス変数を囲むように記述します。 –

+0

この場合は意味がありません。 'i 'の値が実際のループの間にi番目の要素に対して' click'イベントを発生させます。 '$' 'imgpicker .photo .add')eq(i).trigger( 'click'); 'i'値を固定する必要はありません。 – Alexander

関連する問題