2013-11-24 47 views
0

爲什麼我不能刪除tr。什麼是錯在這個源代碼:表中的jquery父項

  1. JS代碼

    $(".delete").click(function() { 
        var parent_1 = $(this).parent(); 
        var parent_2 = $(parent_1).parent(); 
        $(parent_2).remove(); 
    }); 
    
  2. HTML代碼

    <html> <table> 
        <tr id="row_1"> 
         <td> <input type="submit" class="delete" value="1" /> </td> 
        </tr> 
    </table> </html> 
    
+0

\t \t \t ​​\t \t
user3026413

+0

我無法添加HTML代碼 – user3026413

+1

[works here](http://jsfiddle.net/nTLzz/)。有什麼問題?? – mithunsatheesh

回答

1

,我認爲它應該工作,但你可以使代碼更好。標準的jQuery對象聲明方式是$(selector)。您的​​和parent_2都是object,因此無需將其放入$()。相反,你可以像這樣做$parent_1$parent_2,所以很容易認識到這兩個都是jQuery對象。

$(".delete").click(function() { 
    var $parent_1 = $(this).parent(), 
     $parent_2 = $parent_1.parent(); 

    $parent_2.remove(); 
}); 

您仍然可以通過使用parents()選擇與eq()一起進一步完善它指定祖先你綁得。

$(".delete").click(function() { 
    $(this).parents().eq(1).remove();// the grandfather of $(".delete") which is <tr> 
}); 
0

您的代碼可能會使用一點點刷新,但它應該刪除該行。下面是一個jsfiddle,其中一個更清晰的方法可以做到這一點:另外在附註中,一旦你用jQuery調用了某些東西並將它存儲在一個變量中,你就可以訪問所有jQuery的函數。 (它已經是一個jQuery對象,不需要重新傳遞給jQuery的例子:

您有:

var parent_1 = $(this).parent(); 
var parent_2 = $(parent_1).parent(); 

你可以這樣做:

var parent_1 = $(this).parent(); 
var parent_2 = parent_1.parent();