1

いくつかの番号ラベルを並べ替えようとしていますが、特定のクラスを持つ子を含むセレクターをループするだけにしたいです。

私のHTML:

<div class="input-prepend">
   <span class="add-on">1</span>
   <input data-line-id="4613" type="text" class="input-large address-line" value="6 Flakefield">
   <img data-toggle="tooltip" class="input-action delete-line" src="/public_html/images/delete.png" width="16" height="16" data-original-title="Delete line 1.">
</div>

そしてJQuery:

$('#addressStepContent').on('click', '.delete-line', function(){
   //$(this).parent().detach();
   $.each($(this).parent().siblings('> .address-line').andSelf(), function(i, v){
       $(this).children('.add-on').text(i+1)
   })
})

これは機能しませんinput-prepend。画像の削除をクリックした div にのみ影響します。

クラスを持つ子を含むセレクターをループするようにするにはどうすればよいですか.address-line


また、ラベル要素に遭遇したときに、ループを停止または中断する必要があります。

4

4 に答える 4

1

このようにしてみました??

 $.each($(this).parent().find('.address-line'), function(i, v){
        $(this).children('.add-on').text(i+1)
      })
于 2013-03-20T08:03:03.163 に答える
1

これを試してください:

$('#addressStepContent').on('click', '.delete-line', function(){
    var i = $(this).closest('div').index();
    $(this).siblings('.add-on').text(i+1);
});

このためには、ローカル変数が必要です。

.each()はまったく必要なく.siblings()、少し間違っているようです。これを試してみて、役立つかどうかを確認してください。

デモをチェックアウト

于 2013-03-20T08:07:49.503 に答える
1

find ..を使用してください。そこでループする必要はないと思います

この..

 $(this).parent().find('.add-on').text(i+1)

また

$(this).siblings('.add-on').text(i+1)

また

$(this).closest('.add-on').text(i+1)
于 2013-03-20T07:56:22.473 に答える
0

これが私が思いついた解決策です。より良いものにするためのアイデアがあれば、次のことを教えてください。

$('#addressStepContent').on('click', '.delete-line', function(){
      targets = $(this).parent().siblings();

      $(this).parent().detach();
      n = 0
      $.each(targets, function(i, v){
        if($(this).is('label') && $(this).text() != 'Address lines')
        {
          alert($(this).text())
          return false;
        } else {
          if($(this).children('.add-on').length > 0)
          {
            n++;
          }
          $('.add-on', this).text(n);
        }
      })
    })
于 2013-03-20T08:51:35.273 に答える