0

初めてのポスターですが、常にこのサイトを例として使用してください。私の小さな問題はこれです(調査しましたが、問題の解決策が見つかりません)...

50 以上の名前のテキスト リストと、毎日 1 つの項目 (つまり、50 + x 7 のマトリックス) があり、毎日のテキスト (1 日あたりの div) を右クリックして、メニューを表示できるようにしたい1日あたりのそのアイテムに特に関連しています。これは大したことではありませんが、すべてのアイテムを個別に識別し、JS で DivID を使用して別の関数を呼び出す必要があるため、これは大したことになります。他の jquery メニュー オプションを調べましたが、動的に名前を正しく取得する方法がわかりませんでした。

私が抱えている問題は、メニューを作成してアイテム ID を取得することではありませんが、右クリックした後に ContextMenu が表示されなくなることです。

ページの他の場所に右クリック メニューを表示したいのですが、これらの DIV 要素ではなく、作成中のメニューだけです。

次のコードは簡略化されています...

これは私が使用しているJSです:

function go(e,idname) 
    {
     var rightclick;
     e = e || window.event;
     if (e.which) rightclick = (e.which == 3);
     else if (e.button) rightclick = (e.button == 2);       
     var a = idname.id;
     a = (a.substring(11));  

     ShowContent('ToggleValueFloat');   // Display the DIV      

     $(document).ready(function() 
         {
          $('#ToggleValueFloat').html('MY MENU TEXT' + <a href="Javascript:ToggleDay(' + a + ');">EXAMPLE</a>);         
          return false;
         }); 

    return false; 
    }


function ShowContent(d) {
    if(d.length < 1) { return; }
    var dd = document.getElementById(d);
    AssignPosition(dd);
    dd.style.display = "block";
}

これは、例に使用している PHP です。

echo  '<a id="togglePopup' . (int)$arrayEId[$allEntries] . '" onmousedown="go(event,this); return false;">example</a>';

これは、私が表示するために使用している DIV です。

<div id="ToggleValueFloat" style="display:none;  position:absolute;  border-style: solid;  background-color: white;  padding: 5px;"></div>

コンテキストメニューが表示されないように毎回falseを返そうとしていますが、機能しません。ページで右クリックを完全に無効にすることもできますが、これはこれまで以上に非生産的であることがわかります。

どんな考え/助けも素晴らしいでしょう! 私はオプションを受け入れます。ありがとう、スティーブ

4

1 に答える 1

1

まず、これは問題です。

 if (!e) var e = window.event;

これは、すべての変数宣言が巻き上げられるため、次と同じです。

 var e;
 if (!e) e = window.event;

という名前の引数があり、eそれをオーバーライドする同じ名前のローカル変数を作成しています。e未定義の場合に引数を再割り当てするには、その行を次のように置き換える必要があります。

e = e || window.event;

ターゲティングの問題については、マウスがターゲットにされた場合にオブジェクトを見て、(メニューを表示する前に) 対象のオブジェクトがメニューを表示したいオブジェクトであるかどうかを判断してみませんか?そして、クリックが目的のターゲットに達した場合にのみ、メニューを表示するコードを呼び出します。

于 2012-07-18T05:03:07.450 に答える