previousDiv前值當我運行如下所示的jQuery的遇到問題始終是:[]。我曾嘗試.prev()函數的一些變化,包括.prev(「DIV」),和.prev()都具有相同的結果。遍歷DOM獲得DIV發生的歷史只是另一種元素
這裏是jQuery的:
$('.AddToRole').click(function(evt) {
var path = document.URL;
var thisUser = this.value;
var previousControl = $(this).prev('.AvailableRoles');
var newUserRole = previousControl[0].options[previousControl[0].selectedIndex].text;
var newHTML = "<button id='button_DeleteRole_" + newUserRole +"' class='DeleteRole' value=" + newUserRole + ">X</button> <label id='label_DeleteRole_" + newUserRole + "'>" + newUserRole + "</label><br />";
var previousDiv = $(this).prev('#DisplayUserRoles');
$(previousDiv).append(newHTML);
下面是在頁面的HTML /剃刀代碼:
<div>
@* Display user email. *@
<h3>@user.Email</h3>
<div>
<div id="DisplayUserRoles">
@{
@* Display roles user belongs to. *@
foreach (var role in userRoles)
{
@* Remove user from role button. *@
<button id="[email protected]" value="@role.RoleName" onclick="RemoveUserFromRole(this);">X</button>
<label id="[email protected]">@role.RoleName</label>
<br />
}
}
</div>
<br />
@{
@* Create ListBox with roles user does not belong to. *@
var items = rolesUserDoesNotBelongTo.Select(i => new SelectListItem
{
Value = i.RoleName,
Text = i.RoleName
});
string listBoxId = "listboxRoles_";
listBoxId = listBoxId + user.Email;
}
@Html.ListBox(listBoxId, items, new { @class = "AvailableRoles" })
@* Add user to role button. *@
<button id="[email protected]" class="AddToRole" value="@user.Email">Add To Role</button>
</div>
</div>
對於最終的結果,我想之前剛剛添加其他按鈕和標籤關閉#DisplayUserRoles的div標記。
可能只是一個錯字:你沒有關閉'click'事件。 '})' – RASG
我們需要看到實際的HTML(從查看/源在瀏覽器),而不是模板語言知道如何遍歷您的HTML。 – jfriend00
我認爲問題在於.prev()只選擇相同元素類型的兄弟姐妹。在你的情況下,$(this)是一個按鈕,所以它沒有其他兄弟,而.prev()返回[]。 –