1

基本的な話ですが、各dividを動的に処理するシステムがあります。私は自分のコンテキストメニューを引き継ぐことにしました。要素のIDがハードコーディングされている限り、それは機能します。配列のリストから要素名を取得する関数を作成しようとしていますが、そのスローエラーは右に残っています。

function menuclick()
{
alert("Menuclick Called");
var limen= ["armenu", "ormenu", "prmenu", "apmenu", "auxmenu", "itmenu", "sysmenu"];
var menues= Array();
var men1 = "menu$pf1$topmen$topmen$menul$menuli$";
for (idx=0;idx<6;idx++){
    menues[idx] = "#"+men1+limen[idx];
    $(menues[idx]).bind("contextmenu", this.id, function(e) {
        $('#example-menu').css({
            top: e.pageY+'px',
            left: e.pageX+'px'
        }).show();
return false;
});
    alert(menues[idx]);
}
return;
}

$(menues [idx])。bindが問題の原因であり、主にmenues[idx]です。しかし、私はその理由を理解できません。助言がありますか?

編集**言及するのを忘れました、firebugが示すエラーは次のとおりです:

「キャッチされない例外:構文エラー、認識されない式:$ pf1 $ topmen $ topmen $ menul $ menuli $armenu」

編集**これはphpを使用してデータベースからdivIDを取得します。

4

1 に答える 1

0

ああ.NET、そのばかげた慣習。「ID」ではなく「名前」を参照しようとしています。メニュー マークアップは次のようになります。

<div name="menu$pf1$topmen$topmen$menul$menuli$armenu" id="menu_pf1_topmen_topmen_menul_menuli_armenu"> ... </div>

つまり、2 つのオプションがあると言われています。

  • 1) ドル記号をアンダースコアに変更します (推奨)

var men1 = "menu_pf1_topmen_topmen_menul_menuli_";

  • 2) 次のコード行を変更します。

menues[idx] = "#"+men1+limen[idx];

これに:

menues[idx] = "[name='" + men1 + limen[idx] + "']";

于 2012-10-19T19:24:08.120 に答える