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/>

这段代码在循环内,循环进行了两次,循环的结果是这样

<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>

如果单击其中一个表,它将执行此操作(我使用 jquery)

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

它会提醒 14 和 48 ......如果我点击第一个表,如何只提醒 14 ?如果我点击第二个表,它会提醒 48 ?

4

3 回答 3

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

使用$(this).children("input.form_id")而不是$('.clickedResult input.form_id')仅通过作为您单击的 div 的后代的 form_id。

考虑到您的示例,代码如下所示:

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

还有人可能会争辩说,在您的情况下,使用.children()而不是.find()更快,因为您的输入仅比 div 低一个 dom 级别,并且.children()只搜索一层深,而.find()遍历整个树以查找所有可能的候选者。

于 2012-11-03T13:05:19.090 回答
1

event在点击处理程序中使用参数,如下所示:http: //jsfiddle.net/wE6JK/

于 2012-11-03T13:11:41.973 回答