Как делать один (“parent> child”) .click (), если у меня есть <select> <option>?

Я нуждаюсь в том, чтобы бросить событие .click, когда кликнут в каком-то option select.

Я имею в виду что-то как это:

$("select.diat > option").click(function(){alert("hola");});


Я основался на этой документации: https://api.jquery.com / child-selector/. Там они делают что-то, как что я хочу, только, чем со списком.

Какая-то идея, чтобы способствовать тому, чтобы это функционировало?

3
задан 03.11.2016, 07:15
2 ответа

Событие должен быть ассоциируемым с <select> отец, не с детьми.

Событие для, когда меняется стоимость select, - .change(), которые tambiГ©n будут тебе позволять захватывать изменения, реализованные с клавиатурой (немного, что не взрывается с .click()).

$("select.diat").change(function(){
  console.log("Se seleccionó: " , $(this).val());
});
<!-- jQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<!-- HTML -->
<select class="diat">
  <option value="Lunes">Lunes</option>
  <option value="Martes">Martes</option>
  <option value="Miercoles">Miércoles</option>
  <option value="Jueves">Jueves</option>
  <option value="Viernes">Viernes</option>
  <option value="Sabado">Sábado</option>
  <option value="Domingo">Domingo</option>
</select>
3
ответ дан 24.11.2019, 12:45
  • 1
    спасибо, вот то, что он искал! –  Roberto Sepúlveda Bravo 03.11.2016, 07:22
  • 2
    Я радуюсь, что он подавал тебя. Я рекомендую тебя tambi и # 233; n читать ответ Альваро , чтобы заканчивать понимать c и # 243; mo функционирует .click() (и голосовать за +1 tambi и # 233; n) –  Mariano 03.11.2016, 07:24

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

То, что ты можешь делать, состоит в том, чтобы контролировать событие click select в себе, но это будет представлять какие-то проблемы: не только он бросится, когда нажмут на выбор, но также когда нажимают на список для того, чтобы он развернулся (и возможно, что это не что-то, что ты хотел бы). Другая проблема состоит в том, что, если пользователь использует клавиатуру вместо мыши, это событие не взорвется.

Другой выбор состоял бы в том, чтобы контролировать событие change также select, но у этого выбора также есть проблема: если нажимают на тот же выбор, который уже выбран, он совсем не бросается. Кроме того, также он бросился бы даже, если не нажимают на выбор (например, если пользователь использует клавиатуру, чтобы менять выборы)

Здесь я оставляю тебе выбор слушая событие click select:

$(".diat").on("click", function() {
  console.log("clicked");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<select class="diat">
  <option value="Lunes">Lunes</option>
  <option value="Martes">Martes</option>
  <option value="Miercoles">Miércoles</option>
  <option value="Jueves">Jueves</option>
  <option value="Viernes">Viernes</option>
  <option value="Sabado">Sábado</option>
  <option value="Domingo">Domingo</option>
</select>
4
ответ дан 24.11.2019, 12:45
  • 1
    Большое спасибо из-за aclaraci и # 243; n, tendr и # 233; очень в счете это select так как нуждаться и # 233; выдавать, если пользователь использует клавиатуру, возможно e.preventDefault () было подходящим, но это другого поля ягода. –  Roberto Sepúlveda Bravo 03.11.2016, 07:30

Теги

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