0

我有一个列表视图,我需要为右键单击事件添加一个弹出窗口。目前我已经用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>

对这个问题有任何想法吗?

4

1 回答 1

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 找到解决方案。

:)

于 2013-04-29T07:26:23.517 回答