0

クエリ文字列に「$」文字が含まれているときに要素が見つからないjqueryに問題があります-既知の問題はありますか?残念ながら、検索エンジンでは、スレッド内のシンボルを検索するのが非常に困難です。

私はこのようなhtmlを持っています:

<TD id="ctl00$m$g_cd3cd7fd_df51_4f95_9057_d98f0c1e1d60$ctl00$ctl00_5"
    class="MenuItem"
    onclick="setSelectedTab('ctl00$m$g_cd3cd7fd_df51_4f95_9057_d98f0c1e1d60$ctl00$ctl00_5');"
    tabsrowid="ctl00$m$g_cd3cd7fd_df51_4f95_9057_d98f0c1e1d60$ctl00$ctl00_"
    nohide="false">...

そして私のjscriptは次のようになります:

function setSelectedTab(selection) {
    var ids = selection.split('/');
    for (var i = 0; i<ids.length; i++) {
        var item = $("#" + ids[i]);
        item.addClass("selected");
        $("#" + item.attr("tabsrowid")).show();
    }
}

ファイアバグで分析していると、「item」が空のセットであることがわかります。たとえば、$('。MenuItem')をクエリすると、ページ内の25個の一致するアイテムを含む結果セットが正しく返されます。sに$charが含まれていると、$(s)が機能しないように見えますか?

それに対する解決策は何ですか?それがばかげた質問またはよく知られている問題である場合は申し訳ありません-私が言ったように、私はグーグルで回ろうとしましたが、失敗しました。

注:javascript自体、重複したID、jqueryがロードされていないなどの問題ではありません。関数はonclickで呼び出され、$('#' + ids [i])をdocument.getElementById(ids [i])に置き換えると、正しい要素が返されます。fyi、関数setSelectedTabに渡される文字列には、通常、TD要素への階層パスが含まれています。ただし、上記のTDの例では、ids.lengthは1です。

ありがとう、ラジャ。

4

1 に答える 1

1

おそらく、バックスラッシュでそれらをエスケープしてみてください

<TD id="ctl00\$m\$g_cd3cd7fd_df51_4f95_9057_d98f0c1e1d60\$ctl00\$ctl00_5"
    class="MenuItem"
    onclick="setSelectedTab('ctl00\$m\$g_cd3cd7fd_df51_4f95_9057_d98f0c1e1d60\$ctl00\$ctl00_5');"
    tabsrowid="ctl00\$m\$g_cd3cd7fd_df51_4f95_9057_d98f0c1e1d60\$ctl00\$ctl00_"
    nohide="false">...
于 2010-08-22T18:52:07.217 に答える