Замените любые (.) Периоды на обратную косую черту, чтобы я мог выбирать элементы - PullRequest
2 голосов
/ 22 мая 2009

У меня есть некоторые элементы с (.) Периодами в них, и мне нужно выбрать их, но мне нужны некоторые экранирующие символы, поэтому я верю. Как я могу быть уверен, что моя строка, в которой может быть точка, будет правильно экранирована. Как-то так?

var title = "User1.Title";
var string = //replace any periods with escape sequence?
$('#'+string).show();

У него может быть более одного (.) Периода, надеюсь, нет, но если я смогу заменить все (.) Периоды, чтобы я мог сделать свой выбор, который был бы великолепен.

Ответы [ 3 ]

6 голосов
/ 22 мая 2009

Ты имеешь в виду это?

$('#'+string.replace(/\./g, "\\.")).show();
3 голосов
/ 22 мая 2009

Вы могли бы сделать это ...

$("[id="+string+"]").show();

... но проблема этого парня в том, что он не такой быстрый, поскольку он будет проходить по всему дереву DOM, ища каждого парня с таким идентификатором, а не только одного.

Вы также можете сделать это ...

$('#'+string.replace(".", "\\.")).show();

.. что jQuery будет предварительно анализировать этот селектор и использовать document.getElementById за кадром.

Вы также можете сделать это

$(document.getElementById(string)).show();

... который дает тот же эффект, и вам не нужно беспокоиться о специальных символах CSS. Просто будьте осторожны с IE (6 и 7) и Opera, который выбирает элементы не только по его идентификатору, но и по имени.

1 голос
/ 22 мая 2009

Это работает:

$("[id='"+string+"']").show()

нет необходимости избегать его, если вы указываете его как свойство - jquery анализирует его по-другому.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...