jquery
2013-06-18 3 views -2 likes 
-2

Я использую эту JQuery строку кода и она отлично работает с установленнымJQuery версии 1.7.2 по сравнению с 1.8.3

$("div[id='gallery-'+nr] ul.previews li[id*='preview-']").last().clone().attr('id','preview-extra').appendTo("div[id='gallery-'+nr] ul.previews"); 

Я добавляю <li> -элементные к <ul> списку JQuery версии 1.7.2 К сожалению, эта строка кода не работает в JQuery 1.8.3

в ErrorMessage İŞ ошибка: ошибка синтаксиса, непризнанный выражение: Div [ID = 'галерея -' + NR] ul.previews Bronbestand: http://www.inwording.nl/supportbeta/wp-includes/js/jquery/jquery.js?ver=1.8.3 Регель : 2

Таким образом, это относится к части приложения appendTo.

я могу изменить его

.appendTo("div[id='gallery-'+nr] ul[class='previews']"); 

Это снимает ErrorMessage, но не добавляет элемент в мой список.

Я могу изменить версию jQuery обратно в 1.7.2, но я не уверен, что это путь, так как это часть плагина WordPress, а WordPress 3.5+ - с jQuery 1.8.3. Другие плагины могут зависеть от 1.8.3, если я верну его обратно к 1.7.2, он сломает другие плагины.

Я попытался найти различия между 1.7.2 и 1.8.3, но не смог найти никакой информации, связанной с кодом, который я использую.

Кто-нибудь видел эту проблему раньше?

+3

Что именно делает 'ДИВ [ID = 'галерея -' + NR]' ссылаться? Является ли 'nr' переменной, определенной ранее в коде, поэтому вы ожидаете что-то вроде' gallery-123'? – jammykam

+0

вам нужно поставить кавычки вокруг значения атрибута. –

+0

Вы понимаете, что даже v1.8 устарел двумя главными версиями (текущая версия - 1.10) – Spudley

ответ

1

Есть nr переменная, которую вы используете, чтобы вставить селектор, или это действительно часть id вашего <div>?

Другими словами, это то, что находится в коде HTML?

<div id="gallery-+nr"> 

Это необычный id, но это действительно в HTML5.

Если это то, что она есть, то проблема только, что одна из цитат в неправильном месте в этом селекторе:

div[id='gallery-'+nr] 

Это необходимо будет:

div[id='gallery-+nr'] 

первая версия является недопустимой селектор, и даже JQuery 1.7.2 отвергает, когда вы используете его сам по себе:

> $("div[id='gallery-'+nr]") 
    Error: Syntax error, unrecognized expression: [id='gallery-'+nr] 

Oddl у достаточно, 1.7.2 делает позволяют этот селектор, когда он используется как часть более длинного селектора в коде:

> $("div[id='gallery-'+nr] ul[class='previews']") 
    [ ul.previews ] 

Ошибка проверка получил строже в 1.8.3, где он отвергает эту форму селектора слишком.Но опять-таки изменить его на это будет работать:

$("div[id='gallery-+nr'] ul[class='previews']") 

Теперь, когда я впервые прочитал ваш вопрос, я думал, nr был на самом деле это переменная, которая должна быть сцеплены в id строку в селекторе, например, Вы можете иметь этот HTML:

<div id="gallery-9"> 
    <ul class="previews"> 
    </ul> 
</div> 

и с учетом переменной nr которого текущее значение 9, вы можете выбрать <ul> так:

$("div[id='gallery-" + nr + "'] ul[class='previews']") 

Я подозреваю, что я был неправ в этом догадка, так как вы упомянули, что код работал в jQuery 1.7.2. Но на всякий случай, я оставлю эту часть ответа здесь с парой соответствующих предложений:

  1. Он работает нормально так или иначе, но я бы предложил поменять местами одинарные и двойные кавычки, поэтому JavaScript строки одинарные и атрибуты внутри селекторов двойные кавычки. Таким образом, он следует документации jQuery для селекторов и также согласуется с вашими другими цитированными строками.

  2. Полезно форматировать длинные цепочки jQuery с помощью вызовов метода на отдельных строках вместо одной длинной строки.

Собираем все это вместе, код может выглядеть следующим образом:

$('#gallery-' + nr + ' ul.previews li[id*="preview-"]') 
    .last() 
    .clone() 
    .attr('id', 'preview-extra') 
    .appendTo('div[id="gallery-' + nr + '"] ul.previews'); 
+0

Спасибо за ваш ответ. К сожалению, в вашем коде есть ошибка. Угадайте, даже когда вы будете следовать правилам кавычек, это все равно может сбить с толку. 'div [id =" gallery- '+ nr +'] 'должно быть' div [id = "gallery- '+ nr +'"] 'Очень здорово, что многие люди готовы поделиться своими знаниями, однако я думаю большинство плакатов могут обойтись без покровительства. – RST

+0

@RST - Спасибо, что поймали это. Да, склеивание строк, в которых сами строки содержат кавычки, всегда сбивает с толку, независимо от того, какое соглашение вы следуете! :-) Что касается покровительства, Я был неясно, ссылались ли вы на что-то в своем ответе или просто на ответы SO в целом? Я стараюсь сделать мои ответы дружелюбными, а также полезными, поэтому, когда я пропускаю отметку, полезно знать специфику, чтобы я мог исправить Я внимательно просмотрел свой ответ и нашел пару вещей, которые могли бы встретить как недружелюбные и обновленные. Любая обратная связь будет приветствоваться. –

+0

@RST - А также, что получилось? переменную, которая должна быть объединена с другими строками, чтобы сделать селектор, или это все iteral часть 'id'? –

Смежные вопросы