2012-07-06 84 views
0

我使用的是asp.net Repeater控件輸出下面的標記:越來越容器元素使用jQuery

<div class="detailsItem"> 
    <table style="width:100%;border: solid green 1px"> 
     <tbody> 
     <tr> 
      <td colspan="3" style="text-align: right"> 
      <a href="javascript:editItem($(this).closest('.detailsitem'));">Edit</a> 
      </td> 
     </tr> 
     </tbody> 
    </table> 
</div> 

我以爲代碼$(this).closest('.detailsitem')會給我包含div。如果我對傳遞給editItem的內容做了一個提示,我只是得到一些javascript代碼。不知道從哪裏來。我試過.parent等各種組合,沒有運氣。

我發現this post這是相似的,但它似乎沒有幫助我。我假設問題可能與我的函數調用。

我錯過了什麼?

非常感謝,一如既往!

回答

1

您需要在中繼

<a href="javascript:void(0);" class="edit">Edit</a> 

使用類的錨在ready情況下,附加一個單擊事件處理程序,所有定位的:

$(".edit").live("click",function(){ 
    var cur = $(this); 
    editItem(cur.closest("div.detailsItem")); 
}); 
+0

輝煌。所以再次拯救! – earthling 2012-07-06 23:13:02

1

jQuery選擇是大小寫敏感的請嘗試以下...(大寫我的項目)

$(this).closest('.detailsItem') 

更新:

Chandu也說得對「這個」對象是內部的窗口對象HREF = 'JavaScript的:......'。 您也可以使用onclick =''屬性,其中'this'對象是對實際錨點的引用。

1

當您執行editItem函數時,根據您的代碼this上下文設置爲window對象。

而不是輕輕地綁定click事件。

如:

<div class="detailsItem"> 
    <table style="width:100%;border: solid green 1px"> 
     <tbody> 
     <tr> 
      <td colspan="3" style="text-align: right"> 
      <a href="#edit" class="edit-item">Edit</a> 
      </td> 
     </tr> 
     </tbody> 
    </table> 
</div> 

<script type="text/javascript"> 
$(function(){ 
    $(".edit-item").click(function(e){ 
     e.preventDefault(); 
     editItem($(this).closest('.detailsItem')); //Changed the class selector to match what you have in HTML 
    }); 
}); 
</script>