edward
  • 0
Новичок

Странная проблема с jquery при обновлении до WordPress 3.1

  • 0

После установки WordPress 3.1 окно выбора плагина jquery, которое я использую, больше не работает на 100 процентов.

Я использую этот плагин в серверной части wordpress, чтобы заменить свои <select></select> собственные html-коды, к которым я могу применить css, но с wordpress 3.1 многие из них <select> не заменяются на 100%, <option> например, отсутствуют в замененных кодах.

<select>
  <option (some attributes...)>text</option>
  <option (some attributes...)>text</option>
</select>

предполагается заменить на (на самом деле не заменить, оригинал <select> будет скрыт)

<div class="jquery-selectbox">
<div class="jquery-selectbox-moreButton"></div>
<div class="jquery-selectbox-list jquery-custom-selectboxes-replaced-list">
  <span>text</span> /* option 1 */
  <span>text</span> /* option 2 */
</div>
<span class="jquery-selectbox-currentItem">text of selected option</span>
</div>

в то время как фактический результат

<div class="jquery-selectbox">
<div class="jquery-selectbox-moreButton"></div>
<div class="jquery-selectbox-list jquery-custom-selectboxes-replaced-list">
  /* nothing here */
</div>
<span class="jquery-selectbox-currentItem">nothing here</span>
</div>

странно то, что до сих пор довольно много <select> заменяется на 100%.

Я попытался выполнить откат до wordpress 3.0 и дважды переустановить wordpress 3.1, скрипт отлично работает после отката до 3.0 и до тех пор, пока установлена ​​версия 3.1, проблема возникает.

на моем тестовом сайте нет плагинов wp, и библиотека jquery загружается полностью первой, все остальные мои скрипты работают хорошо. Много искал и не повезло, но я нашел, где возникает проблема, хотя понятия не имею, почему это происходит именно так.

return this.each(function() { // for each <select>
    var _this = jQuery(this);
        ... // I added an alert here, alert(_this.attr('id')), to print <select> id, and all <select> id are catched
        jQuery('option', _this).each(function(k,v){
            ... // I added a same alert at first line this function, only replaced 100% <select> id are catched
        }); 
        ...
    });

это коды плагинов, которые заменяют, поскольку все они не заменяются на 100% <select>, строка, которую я прокомментировал выше, не реализуется, похоже, ее просто перепрыгнули.

Есть идеи?


[Обновление] Я удалил все остальные скрипты и плагин, в моем скрипте остались только коды

jQuery(document).ready(function() {
  jQuery('#myadmin select').each(function() {
      jQuery(this).find('option').addClass('huh?');
  });
 });

Все варианты в тех не заменены 100% <select> не получают класс ‘а?’


[Обновление 2] Я изменил сценарий в обновлении 1 на

jQuery(document).ready(function() {
  jQuery('select option').addClass('huh?');
 });

Угадай, что? Все <option> получили этот класс ‘да?’. Получается вроде что-то про jQuery, но почему WP 3.1?


[Решено]

WP 3.1 обновил версию jQuery до 1.4.4, я отменил ее регистрацию и вернул jQuery 1.4.2 на свою страницу, теперь все в порядке, все <select> заменено на 100%

последний вопрос: как мне отметить этот вопрос как решенный?

Share
  1. вы упустили самую важную часть кода. вставьте его полностью

    • 0
    • Вы имеете в виду коды внутри функции (k, v)? я добавил предупреждение в первую строку этой функции, и оно не реализуется для всех проблем <select>

      • 0
    • Просто мысль… ЕСЛИ WP3.1 обновляет содержимое некоторых полей выбора через AJAX, ваша функция, вероятно, будет пропущена, если вы не перехватите ее через life вызов jQuery или что-то еще, что называется. По крайней мере, это было бы объяснением. Попробуйте предупредить innerHTML <select> элемента в начале вашей функции, чтобы увидеть, есть ли там параметры, прежде чем он даже доберется до них.

      • 0
    • Это было немного странно само по себе… я думаю, я пытаюсь сказать, что вам, вероятно, нужно подключить свою функцию в jQuery таким образом, чтобы она запускалась снова и снова, когда элементы вставляются на страницу, или после всего еще побежал…если диагноз верный, т.е.

      • 0
    • @wyrfel, я когда-либо использовал оповещение для печати _this.html(), и <option> все там. Я думаю, все дело в результатах jQuery(‘option’, _this), пусто. Смотрите мое обновление.

      • 0
  2. Найди это:

    Что касается ответа на ваш вопрос, вложенные други не работают в jQuery, если вы используете эту переменную. Чтобы устранить проблему, попробуйте использовать полный стиль each .

    в ответ здесь.

    • 0

Оставить ответ

You must login to add an answer.