Я получил (рабочий) следующий код

$('#selBookable').change(function () {...

А также

 <div class="radio radio-search">
  <label><input id="radio-new-pop" type="radio" name="radio_newest_popular" value="new" >Neueste</label>

Который выполняется, когда #selBookable получает другое значение.

Теперь я хочу выполнить эту функцию, когда нажата кнопка переключателя в другом месте.

Я старался :

$('#selBookable, #radio-new-pop').change(function () {...

Но это не работает. Теперь я подумал над тем, чтобы дать этому имени .change (function NAMEHERE) имя и выполнить эту функцию, но она тоже не работает. Любая помощь приветствуется.

Редактировать: я пытался использовать событие onchange, но затем у меня нет имени функции для вызова.

0
Desory 2 Май 2019 в 15:07

3 ответа

Лучший ответ

Вы можете определить функцию независимо от ее использования, дав ей имя. Затем вы можете прикрепить его к как можно большему количеству целей, сделав вызов такому, который работает (используя имя вместо определения), каждая из которых имеет свою цель.

(Причина, по которой ваша вторая попытка не сработала, заключается в том, что второй аргумент $ является не другой целью, к которой нужно присоединить функцию, а ограничением того, где найти первую цель.)

1
Scott Hunter 2 Май 2019 в 12:10

У вас есть две кнопки радио с одинаковым именем:

<div class="radio radio-search">
    <label>
        <input id="radio-new-pop" type="radio" name="radio_newest_popular" value="new" />
        Neueste
    </label>
    <label>
        <input id="radio-new-pop2" type="radio" name="radio_newest_popular" value="new" />
        Other
    </label>
</div>

Добавьте функцию javascript для обработки этого изменения:

var onRadioButtonChange = void 0;
{
    onRadioButtonChange = function (e) {
        theFunctionYouWantToExecute(); // pass this or e.target if needed
        return false;
    }
}

Прикрепите его к своим элементам:

Array.prototype.forEach.call(
    document.querySelectorAll('input[type="radio"]'), 
    function (element) { 
        element.addEventListener('change', onRadioButtonChange, false); 
    }
);
1
Paul 2 Май 2019 в 12:30

Возможно, попробуйте поместить слушатель jquery в $(document).ready().

ИЛИ

Вы можете добавить обработчик click на радио, например так:

    <div class="radio radio-search">
        <label>
            <input id="radio-new-pop" type="radio" name="radio_newest_popular" value="new" onclick="handleClick(this)">
        Neueste</label>

И в JS:

    handleClick(myRadio) {
        // click function logic
    }

Адаптировано из этого ответь.

1
Jordan Stubblefield 2 Май 2019 в 12:31