Как выпадающий список обновляется? - PullRequest
0 голосов
/ 21 октября 2010

Это происходит в гораздо более сложной более ранней публикации , где я пытался связать вместе обработчики событий js.После просмотра моего поста я понял, что не уверен, как работает один из вариантов поведения на моем сайте, поэтому я хотел опубликовать его в качестве новой темы.

По сути, я работаю с коммерческим плагином WordPress, который использует много очень сложного кода JS / AJAX для обновления некоторых выпадающих меню в зависимости от того, какой выбор делает пользователь. Например, , если вы выберете «вариант 1» в раскрывающемся меню № 1, раскрывающееся меню № 2 будет заменено на «a, b & c», и если вы выберете «вариант 2» в выпадающемВ раскрывающемся меню № 1 в раскрывающемся меню № 2 будет отображаться «x, y & z».

Проблема в том, что я понятия не имею, как плагин обнаруживает изменения в раскрывающемся меню № 1, чтобы обновить параметры в раскрывающемся списке № 2.Обычно существует какое-то событие onClick, которое обрабатывает события такого рода, но после очистки кода я ничего не могу найти.

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

Ответы [ 4 ]

1 голос
/ 21 октября 2010

Я думаю, что код, который вы хотите, минимизирован, что делает его очень трудным для чтения, но этот бит f(k).change или f(i).change в функции 'ProductOptionsMenus', вероятно, является битом, выполняющим работу (f - это jqnc (), который яПодозреваю, что это jQueryNonConflict fubnction) От того, какие k и i частично зависят от того, какие переменные передаются как l, g, o и p

Что касается ваших комментариев, я пробовал этот сценарий:script:

$('#options-1 option').each(function(){
    $(this).parent().after('<input type="radio" name="options-1radio" value="'+$(this).val()+'" /> - '+$(this).text()+'<br />');
});
$('#options-1').after('<br />');
$('input[name=options-1radio]').click(function(){
    radioVal = $('input[name=options-1radio]:checked').val();
    $('#options-1').val(radioVal);
    $('#options-1').change();
});
//$('#options-1').hide();

Но, увы, у меня та же проблема, что и вы, в том, что не срабатывает переключатель, который активирует поиск цены.Я получаю ошибку «слишком много рекурсии», но, похоже, она срабатывает без выполнения кода выше.Я не знаю, является ли это вашим добавленным кодом или исходным кодом.

Желаю вам всего наилучшего в решении этой проблемы.Если у меня будут какие-либо мысли, я отправлю.

0 голосов
/ 21 октября 2010

В нижней части страницы есть функция jquery с тегом .change, она просто обновляет значения с помощью этой функции.Он получает некоторые значения и добавляет их к нижнему.

 $(function(){
    $("#options-1 option").each(function(i, e) {
        $("<input type='radio' name='r' />")
        .attr("value", $(this).val())
        .attr("checked", i == 0)
        .click(function () {
            $("#options-1").val($(this).val());
        })
        .appendTo("#r");
       $("#options-1").change(function(){
       $("input[name='r'][value='"+this.value+"']").attr("checked","checked");
});
});
});

$("#options-1").change(function(){
$("input[name='r'][value='"+this.value+"']").attr("checked","checked");

});
0 голосов
/ 21 октября 2010

Изменения обнаруживаются с помощью общего события "onchange" выпадающего элемента.

Onchange может быть встроен, например:

<select onchange="HandleChange(this);">

Или используя скрипт на стороне клиента, его можно связать с такими командами, как attachEvent или addEventListener, в зависимости от браузера, и я уверен, что это что jQuery использует за кулисами.

Вопрос в том: почему ты спрашиваешь это? Какова ваша цель?

0 голосов
/ 21 октября 2010

ИЗМЕНЕНО после того, как было объяснено содержание образца: я посмотрел на поведение каталога / корзины. Весь код минимизирован и его трудно читать, но похоже, что они используют функции изменения. Независимо от того, являются ли они или нет, я бы использовал изменения, если бы я был вами. То, что вы делаете в коде, с которым вы играете, похоже, у вас есть правильная идея.

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