jQuery Duplicate Selector error

Я бы использовал один лайнер:

df['B'].str.split('>`').apply(lambda x: pd.Series(['']*(2-len(x)) + x))

#   0     1
#0  Y  abcd
#1     abcd
#2     efgh
#3  Y  efgh
29
задан Barmar 31 May 2013 в 18:49
поделиться

3 ответа

Нет такой Duplicated jQuery Selector ошибки; IntelliJ (и другие IDE из идеи, подобной WebStorm ...) выдают предупреждение, в котором говорится, что вы должны хранить выбор jQuery в локальной переменной, а не повторять выбор.

Выдержка из документации jQuery :

Сохранение выборов

jQuery не кэширует элементы для вас. Если вы сделали выбор, который вам может потребоваться сделать снова, вы должны сохранить выбор в переменной, а не делать выбор повторно.

1| var divs = $( "div" );

После того, как выборка сохранена в переменной, вы можете вызывать методы jQuery для переменной так же, как вы вызывали бы их в исходной выборке.

Выборка выбирает только те элементы, которые находятся на странице во время выбора. Если элементы будут добавлены на страницу позже, вам придется повторить выделение или иным образом добавить их к выделению, сохраненному в переменной. Сохраненные выборки не обновляются магическим образом при изменении DOM.

Однако в вашем коде нет дублированного выбора jQuery, поэтому я уверен, что предупреждение приходит откуда-то еще ... Что соответствует тому, что ошибка сохраняется после добавления отсутствующего $.

Как правило, рекомендуется добавлять сообщение об ошибке в ваши вопросы.

79
ответ дан yiwei 31 May 2013 в 18:49
поделиться

У меня была та же самая ошибка, пытаясь что-то вроде этого:

if  ($("#checkbox").is(':checked')){
   value = $("#checkbox").val();

По какой-то причине ошибка была выдана "#checkbox". Я решил проблему, добавив:

//noinspection JSJQueryEfficiency в верхней части оператора if, например:

 //noinspection JSJQueryEfficiency
 if  ($("#checkbox").is(':checked')){
   value = $("#checkbox").val();

, и сообщение об ошибке исчезло.

3
ответ дан Joern Boegeholz 31 May 2013 в 18:49
поделиться

«Двойной селектор» действительно является предупреждением JS lint, которое вы увидите в таких средах разработки, как PHPStorm / WebStorm. По соображениям производительности вы захотите кэшировать ваши селекторы всякий раз, когда это возможно .. например :

(function($) {
  var 
    $mondayCommentLink = $("#mondayCommentLink"),
    $mondayHtmls = $("#mondayComment"),
    $inputMonday = $("<input type='text' id='mondayCommentText' name='mondayCommentText'  />");

    $mondayCommentLink.on('click', function() {
      $inputMonday.val(data.days[0].comment);
      $mondayHtmls.html($inputMonday);
    });

})(jQuery);

... и так далее. Я только что сделал понедельник, но вы продолжите добавлять переменную ссылку на селектор, который вы можете получить, который уже находится в памяти. Ситуация немного сложнее при работе с AJAX или при наличии нескольких областей, но это основная идея. Это просто соглашение, но мне проще ссылаться на селекторы с помощью var $ elem и camelcased.

8
ответ дан JDev518 31 May 2013 в 18:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: