2014-01-05 43 views
0

后跳过表当我打Inner Add row它添加正确的行从.charts-series表,但如果我打Outer Add Row它增加了从.charts-series表中的一行,而不是从.charts表中的一行。这里是小提琴http://jsfiddle.net/cbMHk/5/.find()方法只是父

HTML:

<div class='cont'> 
    <table class="charts" cellspacing="0" cellpadding="0" border="2px solid #000000" align="center"> 
     <thead class="charts"> 
      <tr class="charts charts-first charts-last even"> 
       <th class="charts charts-first charts-tr-header" width="5%">#</th> 
       <th class="charts" width="40%">Name</th> 
       <th class="charts charts-last">serie_points</th> 
      </tr> 
     </thead> 
     <tbody class="charts"> 
      <tr class="odd"> 
       <td class="charts charts-first">1</td> 
       <td class="charts"> 
        <input name="" placeholder="place_series_name" /> 
       </td> 
       <td class="charts"> 
        <table class="charts-series" cellspacing="0" cellpadding="2" border="0" align="center"> 
         <thead> 
          <tr class="even"> 
           <th width="20px" /> 
           <th>value</th> 
           <th>seria_point</th> 
           <th/> 
          </tr> 
         </thead> 
         <tbody> 
          <tr class="odd"> 
           <td class="first">1</td> 
           <td> 
            <input name="" placeholder="0" /> 
           </td> 
           <td> 
            <input name="" placeholder="0" /> 
           </td> 
           <td class="last"><a class="remove-btn remove" title="Remove row" /> 
           </td> 
          </tr> 
         </tbody> 
        </table> 
<a class="add-btn add" title="Add row">Inner Add Row</a> 

       </td> 
      </tr> 
     </tbody> 
    </table> 
<a class="add-btn add" title="Add row"> Outer Add Row</a> 

</div> 

JS:

$('.add-btn').live('click', function(){ 
     var prev = $(this).parent().find('table tbody'); 
     prev.find('tr:last').clone().appendTo(prev).find('input').val(''); 
     return false; 
    }); 

当我检查$(this).parent()似乎是正确的。哪里不对?

+0

首先不要使用活,使用。其次,为什么不创建两个事件处理程序。每个链接/按钮一个? –

+0

@AlexShilman检查小提琴,OP是使用旧版本的jquery,所以没有问题。 – Praveen

+0

@PraveenJeganathan:OP在小提琴中使用1.7.2。 ['.live()'](http://api.jquery.com/live/)从1.7开始被弃用。 – Travesty3

回答

6

使用儿童而不是查找。发现会变得很深,找到你的选择,你不希望你的情况。

var prev = $(this).prev('table').children('tbody'); 
    prev.children('tr:last').clone().appendTo(prev).find('input').val(''); 

Demo

要在live添加已被弃用,而是可以通过事件绑定到一个真实存在的DOM容器元素(或事件文件头)使用的on事件代表团语法在任何时候,只要你需要这个事件。

$('.cont').on('click', '.add-btn', function() { 
    ..... 
    } 
+0

对不起,我误解了 - PSL说得对! –