我想知道,如果有人有更好的方式來訪問元素#TYPE和#type_new根據我的html:jquery遍歷 - 必須有比我更好的方法!
<tr>
<th>Type of Organization</th>
<td id="toggle">
<select name="type" id="type">
<option>Church</option>
<option>College</option>
<option>Theatre</option>
</select>
<input name="type_new" id="type_new" type="text" />
</td>
</tr>
<tr>
<th> </th>
<td><a class="toggle" id="type"><small>Add New Type</small></a></td>
</tr>
這裏是我的javascript:
$("a.toggle").unbind('click').click(function(){
$.prev = $(this).parents().parent().prev().find("td#toggle");
$.select = $.prev.find("#type");
$.textbox = $.prev.find("#type_new");
if($.textbox.is(':visible')==true)
$(this).find("small").html("Add New Type");
else
$(this).find("small").html("Choose From Exisiting Types");
$.select.toggle();
$.textbox.toggle().val("");
});
我知道有是其他方式來佈局的HTML,使JavaScript更容易,但肯定有人有一個很好的方式基於我當前的HTML。
可能值得注意的是,我不只是通過ID或CLASS引用的原因是我也用ajax .load生成了更多的這些動態,並且所有元素都將具有相同的id和類。爲什麼不使用你可能會問的索引?那麼我已經去過那裏了。我不得不實際使用更多代碼來重新綁定點擊事件以包含所有新元素。我會盡可能以最簡單的方式。
謝謝!
更新: 我想強調一個事實,即使用ajax .load在頁面的更下方添加相同的元素。由於$ _POST的原因,它們會有不同的元素名稱,但我希望我的JavaScript函數能夠處理每個實例。如果我僅通過ID引用它,它將更新頁面中的所有元素。
您的代碼完全有意義。我想我錯了,當我的ajax請求添加另一節到我的表中的元素是相同的ID相同。由於發佈原因,他們有不同的名字。我給了他們相同的ID,所以每次有新的請求時,我的一段JavaScript將處理它。我有道理嗎? – jay 2009-10-17 01:10:09
如果您將內容附加到您的頁面上,並*複製頁面上存在的* id,則需要重新修改在服務器上生成標記的方式。使用類,例如
正如你以前的代碼更有意義,如果你不*通過ID選擇。 – karim79 2009-10-17 01:15:32