3

検索ボタンがあります。検索ボタンをクリックすると、次のコードが生成されます。

<div class = 'clickedResult' title = 'click to see details'>
 <table>the result will br written in this table </table>
 <input type = 'hidden' class = 'form_id' value = '$form_id' /> 
 <input type = 'hidden' class = 'status' value = '$status' />
 </div> <br/>

このコードはループ内にあり、ループは 2 回実行され、ループの結果は次のとおりです。

<div class = 'clickedResult' title = 'click to see details'>
 <table>the result will br written in this table </table>
 <input type = 'hidden' class = 'form_id' value = '14' /> 
 <input type = 'hidden' class = 'status' value = 'latest' />
 </div> 

<div class = 'clickedResult' title = 'click to see details'>
 <table>the result will br written in this table </table>
 <input type = 'hidden' class = 'form_id' value = '48' /> 
 <input type = 'hidden' class = 'status' value = 'updated' />
 </div>

テーブルの1つがクリックされると、これが行われます(私はjqueryを使用しています)

$(".clickedResult").click(function()
  {
  $('.clickedResult input.form_id').each(function() 
      {
     alert($(this).val());
  });
  });

それは 14 と 48 を警告します...最初のテーブルをクリックした場合に 14 だけを警告する方法は? 2 番目のテーブルをクリックすると、48 というアラートが表示されますか?

4

3 に答える 3

2
$(".clickedResult").click(function() {
  alert($(this).find('input.form_id').val());
});
于 2012-11-03T13:04:25.243 に答える
2

クリックした div の子孫である form_id のみを調べる$(this).children("input.form_id")代わりに使用します。$('.clickedResult input.form_id')

あなたの例を考えると、コードは次のようになります。

$(".clickedResult").click(function() {
    console.log( $(this).children("input.form_id").val() );
});

.children()また、あなたの場合、代わりに使用する方が高速であると主張するかもしれません.find()。入力は div から 1 dom レベルだけ下にあり、.children()1 レベルの深さしか検索しないのに対し.find()、ツリー全体を移動してすべての可能な候補を見つけるためです。

于 2012-11-03T13:05:19.090 に答える
1

event次のようにクリック ハンドラでパラメータを使用します: http://jsfiddle.net/wE6JK/

于 2012-11-03T13:11:41.973 に答える