1

我有一个如下列表

<tr>
<td>val1</td>
<td>val2</td>
<td>val3</td>
<td><span class="span_view">1</span><a class="view_class">View</a></td>
</tr>
<tr>
<td>value1</td>
<td>value2</td>
<td>value3</td>
<td><span class="span_view">2</span><a class="view_class">View</a></td>
</tr>

如果我单击视图链接,那么它应该打印 span 的关联值,例如,对于第一个视图,它将是 1,对于第二个视图,它将是 2。我编写了以下代码,但它没有打印该值:

$('.view_class').live('click',function(){
   var parentDiv = $(this).closest('span');
   alert(parentDiv);
   var curprice=parentDiv.find('span[id=span_view]').val();
   alert(curprice);
 });

它显示[object Object]undefined。请指导我哪里有问题。提前致谢。

4

2 回答 2

2

代替:

$('.view_class').live('click',function(){
   var parentDiv = $(this).closest('span');
   alert(parentDiv);
   var curprice=parentDiv.find('span[id=span_view]').val();
   alert(curprice);
 }); 

在:

$('.view_class').on('click',function(){
   var curprice=$(this).closest('span.span_view').html();
   alert(curprice);
 });
于 2013-08-11T07:56:56.987 回答
0

尝试:

$('.view_class').on('click',function(){
   var parentDiv = $(this).parent();
   var curprice = parentDiv.find('.span_view').html();
   alert(curprice);
 });

使用父级作为上下文来创建更可维护的代码。如果您需要重新排序跨度,您的代码仍然有效。

或者使用委托事件仅附加 1 个事件处理程序,并且在您使用 ajax 动态加载列表的情况下也可以使用。

$(document).on('click','.view_class',function(){
       var parentDiv = $(this).parent();
       var curprice = parentDiv.find('.span_view').html();
       alert(curprice);
     });
于 2013-08-11T07:59:40.370 回答