0

プロフィール画像のリスト用の複数のドロップダウン メニューを含むテーブルがあります。関連するアクションを実行できるように、リスト要素に写真の DB ID をタグ付けしました。テーブルを次のようにコーディングしました。

<table class="table table-bordered">
<tbody>
<tr>
  <td><img src="/photos/files/5/m/131309a4fb918110ed1061e90a715eca.jpeg"/></td><td><div class="btn-group">
  <a class="btn btn-primary" href="#"><i class="icon-user icon-white"></i> User</a>
  <a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#"><span class="caret"></span></a>
  <ul class="dropdown-menu">
    <li id="5"><a href="#"><i class="icon-pencil"></i> Edit</a></li>
    <li id="5"><a href="#"><i class="icon-trash"></i> Delete</a></li>
  </ul>
</div>
</tr>
<tr>
  <td><img src="/photos/files/5/m/b19102d8ba1158e2a139ffa84e8e8540.jpeg"/></td><td><div class="btn-group">
  <a class="btn btn-primary" href="#"><i class="icon-user icon-white"></i> User</a>
  <a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#"><span class="caret"></span></a>
  <ul class="dropdown-menu">
    <li id="7"><a href="#"><i class="icon-pencil"></i> Edit</a></li>
    <li id="7"><a href="#"><i class="icon-trash"></i> Delete</a></li>
  </ul>
</div></tr>    
</tbody>
</table>

私のjqueryの試みは以下の通りですが、うまくいきません:

    $('.dropdown-menu').on('click', 'li', function(e){

         if ($(this).attr('class')=='icon-pencil') {
                var id = $(this).attr('id');
                alert("ID= " + id);
         }

    });

アラートコードにヒットしたことがないので、何が欠けていますか?

また、写真付き ID を追跡するためのより良い方法はありますか、それともこの方法で機能しますか?

4

1 に答える 1

2

構造に li > a > .icon-pencil がありますが、li クリックで this.className を探しています (これは明らかに li です)。これを試して:

$('.dropdown-menu').on('click', 'li', function(){
    if ($(this).find('icon-pencil').length > 0) {
        var id = this.id;
        alert("ID= " + id);
    }
});

これは通常のクリック要素であるため、よりクリーンなアプローチは、アンカーのクリックをリッスンすることです。

$('.dropdown-menu').on('click', 'a', function(){
    if ($(this).children('.icon-pencil').length > 0) {
        var id = $(this).closest('li').attr('id');
        alert("ID= " + id);
    }
    return false;
});

そして、最もクリーンな解決策は、ID を .dropdown-menu にのみ設定して一意にすることです。次に、.closest('li') の代わりに .closest('ul') を介して取得します。

PS: 重複した ID を持つことは常に悪いことです。

于 2012-07-02T13:55:21.143 に答える