我有代碼將列表項添加到無序列表中,並且與每個列表項關聯的是一個按鈕,用戶可以單擊以將該項從列表中刪除。這是動態發生的(即,他們從模態屏幕中選擇需要添加回該無序列表的東西)。通常該項目的值只是一個整數。在這種情況下,我的代碼都可以正常工作。似乎無法引用一個動態添加的字段
但是,如果該項目的值是一個字符串(因爲有時我需要處理多個代表作爲一個項目),那麼刪除不會做任何事情。
所以在運行時能產生這樣的HTML(從螢火蟲搶下)
<ul id="AgencySpecialism-selected-items" class="multi-select multi-select-selector">
<li>
<label>Spec 1/Spec 2</label>
<input id="AgencySpecialism-3|1" type="hidden" value="3|1" name="AgencySpecialism-3|1">
<button title="Clear selection" style="width: 28px;" onclick="AgencySpecialism_clear('3|1');return false;"> X </button>
</li>
</ul>
我的JavaScript清除功能:
function <%= ViewData["ControlId"] %>_clear(id) {
<% if (Model.MultiSelectMode) { %>
alert('#<%= Model.ControlId %>-' + id);
alert($('#<%= Model.ControlId %>-' + id).val());
$('#<%= Model.ControlId %>-' + id).closest('li').remove();
$('#<%= Model.ControlId %>_SelectedSpecialisms').val($('#<%= Model.ControlId %>_SelectedSpecialisms').val().replace(id + ",", ""));
<% } else { %>
第一個警報顯示
#AgencySpecialism-3|1
第二次警報顯示
Undefined
所以它看起來像是說控制不存在 - 但基於html標記 - 它確實......?!
所以我最終的結果是,我需要這條線的工作像它應該是:
$('#<%= Model.ControlId %>-' + id).closest('li').remove();
如果我在
AgencySpecialism_clear(4)
或
AgencySpecialism_clear('4')
通過再如預期那樣清晰地工作唯一的區別似乎是一個是管道分隔,而不是一個單一的值:(
任何想法將不勝感激我甚至嘗試複製和粘貼實際呈現的id到clear方法..但它仍然認爲它的val是。未定義
編輯 - 對不起,在那裏拋出的.NET MVC的東西 - 但問題是關係到它的jQuery的一部分:)
你試過編碼管道符號嗎? –
你介意把.net的東西換成javascript嗎?我想,要看到完整的javascript更有幫助。 – reporter
感謝威廉! :) – Jen