我有一个listview,我需要为右键单击事件添加一个弹出窗口。目前我用jquery实现了它。但是页面的初始加载,右键单击不起作用。但是,如果我刷新页面,则右键单击正在运行。我查看了html源代码,我可以看到正确加载的所有标记和jquery变量。
这是我的标记。
<asp:ListView ID="lvKeywords" OnItemDataBound="lvKeywords_ItemDataBound" OnItemDeleting="lvKeywords_ItemDeleting"
DataKeyNames="Key" runat="server" OnItemUpdating="lvKeywords_OnItemUpdating" >
<ItemTemplate>
<div id="<%#Eval("Key") %>" class="fsKeywordItem">
<asp:Literal ID="ltrlKeyword" runat="server"></asp:Literal>
</div>
<%--this is the popup--%>
<div class="smartPopUp" id="<%#Eval("Suggession") %>" style="display: none;">
<%-- there are some html controls here --%>
</div>
<script type="text/javascript">
$(document).ready(function () {
$("#" + '<%#Eval("Key") %>').mousedown(function (event) {
switch (event.which) {
case 3:
event.preventDefault();
showPopup('<%#Eval("Suggession") %>');
}
});
$("#" + '<%#Eval("Key") %>').bind("contextmenu", function (e) {
e.preventDefault();
});
});
</script>
</ItemTemplate>
</asp:ListView>
<script type="text/javascript">
function showPopup(divId) {
$("#" + divId).css("display", "block");
}
</script>
关于这个问题的任何想法?
答案 0 :(得分:0)
我认为这是因为document.ready()而发生的。因此,在Listview中删除该jquery部分并使用javascript来完成它。
所以,我会给你一个列表视图的例子。
oncontextmenu='showPopup("popupDivId"); return false;'
将此添加到您的div中,如下所示
<div id="<%#Eval("Key") %>" class="fsKeywordItem" oncontextmenu='showPopup("popupDivId"); return false;'>
<asp:Literal ID="ltrlKeyword" runat="server"></asp:Literal>
</div>
<%--this is the popup--%>
<div class="smartPopUp" id="<%#Eval("Suggession") %>" style="display: none;">
<%-- there are some html controls here --%>
</div>
这里会发生什么,oncontextmenu将触发rigth click事件然后我们在那里调用我们的函数。然后“return false”将停止右键单击事件的默认行为。这意味着它将停止浏览器的默认右键菜单。
希望您可以使用oncontextmenu找到解决方案。
:)