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() が原因で発生していると思います。したがって、リストビュー内のその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 が右クリック イベントを発生させ、そこで関数を呼び出します。次に、「false を返す」は、右クリック イベントのデフォルトの動作を停止します。つまり、ブラウザのデフォルトの右クリック メニューが停止します。

oncontextmenu を使用して解決策を見つけていただければ幸いです。

:)

于 2013-04-29T07:26:23.517 に答える