Jquery taconite селектор с символом, который должен быть экранирован - PullRequest
1 голос
/ 06 октября 2009

Я использую плагин jquery taconite для создания ajax-запроса, который заменит определенный элемент на моей странице, однако у элемента есть идентификатор, например "email.subject" ..

Я могу выбрать его просто отлично, если я сделаю '$("email\\.subject")', но когда я пытаюсь использовать плагин таконита, как это:

<taconite>
    <replaceWith select="#email\\.subject">
        JUCA
    </replaceWith>
</taconite>

В журнале плагинов написано:

[taconite] No matching targets for selector: #email\\.subject

Как я могу сделать эту работу?

1 Ответ

0 голосов
/ 01 июня 2010

Хорошо, это то, что я сделал. Это не работает для меня, хотя. (Я не прошел весь источник). Но это укажет вам правильное направление.

Проблема действительно в том, что в файле jquery.taconite.js около строки 152 (если вы смотрите последнюю версию!) Вы можете увидеть:

var q = cmdNode.getAttribute('select');
var jq = $(q);

если я добавлю предупреждение к приведенному выше утверждению, чтобы узнать значение jq, оно говорит: [Object object]. Но это работает до тех пор, пока не содержит .

Проблема в том, что автор таконита не проверяет . из значения атрибутов "select". Следующий код работает для меня, когда я попробовал его изолировать в простом js-файле. Но когда я использую то же самое в файле jquery.taconite.js, это не работает. Нужно больше подправить?

var x = cmdNode.getAttribute('select');
alert(x); //Shows what you have entered in <replaceWith select="#email.subject"> i.e "#email.subject"
var q = x.replace(/\./g, "\\\\\."); //Searches for a . in the string and escapes it! So now it becomes: "#email\\.subject"
alert(q) //Alerts #email\\.subject ... Great! Works fine till this point!
var jq = $(q);
alert(jq[0]); //Says "undefined"!!!! This is where i got stuck! Why does it say undefined??
...