我在剃刀有foreach
:的onclick功能火灾两次点击
<ul>
@foreach (var node in Model)
{
var par = node.Id;
<li onclick="GetSubMenu(this)" id="@node.Id">
@node.Title
</li>
}
</ul>
中的onclick我调用的方法在
:
function GetSubMenu(e) {
debugger;
$.ajax({
type: "Get",
url: "/Menu/GetSubMenu",
data: { parentId: e.id },
contentType: "application/json; charset=utf-8",
dataType: "json",
}).done(function (result) {
$.each(result, function (index, val) {
$("#" + val.ParentId).append("<ul><li onclick='GetSubMenu(this)' id='" + val.Id + "'>" + val.Title + "</li></ul>");
});
});
}
,并在控制器我回到父菜单的子菜单(我点击它):
public JsonResult GetSubMenu(string parentId)
{
int id = int.Parse(parentId);
return Json(db.PrmMenus.Where(x => x.ParentId == id), JsonRequestBehavior.AllowGet);
}
第一次一切都好,子菜单将sho w正确,但在第二次当我点击子菜单时,onclick函数再次调用子菜单和父菜单,这是什么问题?
您需要停止'click'事件的传播。你可以通过调用该事件的'stopPropagation()'函数来实现。例如:'function GetSubMenu(event,e){... event.stopPropagation();}','... onclick =“GetSubMenu(event,this)”......... – Titus
你是说请求当它已经加载子菜单吗?你有没有尝试从父菜单中取消绑定一旦触发事件?另一种方法是在父菜单中添加一个检查来查看子菜单是否已经加载。 – jedifans
@ jedifans我的意思是说,当onclick为总和菜单启动时,它的所有父对象都被触发了,我该如何解决这个问题? – pejman