2010-01-12 143 views
1

如何在不知道元素名稱的情況下使用jquery選擇元素,單擊不同元素時?下面的代碼循環遍歷所有的類別。我不知道有多少類別,或者名稱會是什麼。當點擊'insertUrl'鏈接時,我需要選擇文本區域。選擇不同於單擊的元素的其他元素

我唯一能想到的是在onclick中運行一個函數,並將文本區域的名稱作爲參數傳遞。

此外,我不確定每個鏈接都有相同的ID時我可以使用選擇器,那麼這甚至有可能嗎?

<% 
    FullName = objCategory.ID & "|" & objCategory.Name 
%>  
<TD COLSPAN="2"> 
<TEXTAREA ROWS="5" CLASS="formWide" id="<%=FullName %>"><%= objCategory.Text %></TEXTAREA><br /> 
<a href="#" id="insertUrl">Insert URL</a> 
</TD> 

回答

1

如果HTML結構保持不變,則可以使用.prev()

你不應該具有相同ID的元素。您可以使用類class="insertUrl"

<% 
    FullName = objCategory.ID & "|" & objCategory.Name 
%>  
<TD COLSPAN="2"> 
    <TEXTAREA ROWS="5" CLASS="formWide" id="<%=FullName %>"><%= objCategory.Text %></TEXTAREA><br /> 
    <a href="#" class="insertUrl">Insert URL</a> 
</TD> 

$(".insertUrl").click(function() { 
    var textarea = $(this).siblings('textarea'); 
}); 
+0

$(this).prev()。prev();因爲
工作。那是不好的做法,還是有更好的辦法? – pinniger 2010-01-12 21:57:30

+0

更改爲使用$(this).siblings('textarea');正如TeKapa所建議的那樣 – 2010-01-15 15:32:36

1

如果使用也許它更好地:

$(this).siblings('textarea'); 

這樣你有更多的靈活性與HTML控件順序。 這樣,如果您刪除了
或更改了該TD內的其他內容,該腳本仍然有效。

1

更好的方法是使用<label>元素。這樣,您可以在文本評論和textarea之間插入更多的附加元素,它仍然可以工作。

<textarea id="ta_id1" onclick="click_processing_func"></textarea> 
<label for="ta_id1" class="link">Insert Url</label> 

現在,如果有人點擊標籤,textarea會收到點擊事件。