JQuery проблема с запросом, имеющим $ в строке - PullRequest
0 голосов
/ 22 августа 2010

У меня проблема с 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();
    }
}

Анализируя в firebug, я вижу, что 'item' - это пустой набор.Например, если я запрашиваю $ ('. MenuItem'), он правильно возвращает набор результатов с 25 соответствующими элементами на странице;похоже, что $ (s) не работает, когда s содержит $ chars в нем?

Каково его решение?Извините, если это глупый вопрос или общеизвестная проблема - как я уже говорил, я пытался гуглить, но безуспешно.

Примечание: это не проблема с самим javascript, или с дублирующимися идентификаторами, или с jquery, не загруженными, иличто-нибудь подобное.Функция вызывается onclick, и если я заменяю $ ('#' + ids [i]) на document.getElementById (ids [i]), она возвращает правильный элемент.Например, строка, переданная в функцию setSelectedTab, обычно содержит иерархический путь к элементу TD;хотя в приведенном выше примере TD, ids.length равен 1.

Спасибо, Раджа.

1 Ответ

1 голос
/ 22 августа 2010

Возможно, попытайтесь избежать их с помощью обратной косой черты

<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">...
...