Есть ли побочные эффекты при использовании конкатенации строк или jQuery внутри селекторов jquery? - PullRequest
1 голос
/ 15 ноября 2008

во время изучения jQuery я придумал следующий странный скрипт. Я не вижу, чтобы я делал это действительно, однако объединение строк для получения имени переменной не является чем-то необычным в JavaScript.

Любые отзывы приветствуются.

...
    <script type="text/javascript">
        var a = 'y';
        $(document).ready(function() {
            $('p[id^=' + $('p[id=x]').html() + a + "]").css('color','blue');
        });
    </script>
...

<p id="x">2a</p>
<p id="2ay_">mytext</p>

Ответы [ 5 ]

2 голосов
/ 15 ноября 2008

Короткий ответ - нет, побочных эффектов нет. Ваш пример причудливый, но, как вы сказали, вы просто исследуете, чтобы увидеть, что вы можете сделать. Ранее я использовал конкатенацию строк и возврат значений функций внутри селекторов jQuery, это может быть полезным методом для управления наборами связанных элементов, которые находятся в разных частях DOM.

Я признаю, что не использовал jQuery.html() внутри селектора, но нет никаких причин, почему это "плохо". Я просто не могу вспомнить ситуацию, когда это было бы строго необходимо. Это делает код довольно ... необычным, и, следовательно, более сложным для понимания и сопровождения.

Если вы действительно нашли применение этому в производственном коде, пожалуйста, сообщите нам об этом. Я был бы очарован, чтобы увидеть, что это такое. :)

0 голосов
/ 19 марта 2009

Да нет причин, вы не можете сделать это. Поскольку $ на самом деле сам по себе является вызовом функции, то все, что нужно оценить, чтобы передать ему параметр, оценивается первым.

0 голосов
/ 15 ноября 2008

Просто интересно, какая-то черная магия в jQuery, которая дает нежелательные побочные эффекты внутри селекторов. Что мне нужно, так это передать строку поиска в селектор во время выполнения.

Может, кстати, jQuery сделать с этим шаблоном:

$ ('p [id =?]'). Click (paramValue, function () {}); где paramValue заменяет заполнитель '?'

0 голосов
/ 15 ноября 2008

Нет, ничего странного. Кроме, может быть, некоторых нежелательных результатов, если кто-то / вы пошли и изменили HTML-код в элементе p. Это определенно довольно странно, как это закодировано, но в этом нет ничего плохого (кроме того, что он не читается / не поддерживается).

Потому что в jQuery нет ничего особенного - это просто библиотека Javascript. Вы не используете какой-то особый синтаксис JS или что-то еще, jQuery просто берет строку и использует ее как селектор. Так что эта строка может быть построена так, как вы считаете нужным.

0 голосов
/ 15 ноября 2008

По-моему, его нечитабельно, неосуществимо ... всего этого следует избегать. Представьте, что вы присоединились к новой компании, и они поставили вас перед целой кучей кода js / jquery, который выглядел так !!

P.S вы должны использовать addClass, чтобы изменить цвет. Я бы предпочел изменить класс css, ведь это настройка стиля, а также более расширяемая, так как вы можете добавлять другие стили без использования кода js.

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