Почему мне нужно использовать двойное событие onClick в jquery? - PullRequest
0 голосов
/ 20 ноября 2018

Мне нужны некоторые пояснения по поводу следующего.

Почему мне нужно указывать событие onClick 2 раза?(он делает то, что я хочу, когда я делаю это так) Однажды внутри функции $('.modal').each(function() и однажды внутри функции $('.window-'+counter).find('input').each

Если я использую только первую функцию onClick, console.log возвращает всевходные идентификаторы из всех форм на экране.

Когда я использую только последнюю onClick функцию, console.log ничего не возвращает.

Я пытаюсь получитьотдельные входы от моих модальных экранов.У меня есть следующий код

    $( document ).ready(function() { 
    $('.modal').each(function() {

//THIS PART-------------------------------------
                $(this).on('click', function() {
//----------------------------------------------

    if($( '.window-'+counter ).has('input:text').length) {
                        //console.log('first');
                        $('.window-'+counter).find('input').each(function() {

//AND THIS PART---------------------------------------------
                            $(this).on('click', function() {
//----------------------------------------------------------

                                console.log($(this).attr('id'));
                            });
                        });
                    };
               });
           });
       });

Это мой HTML

<div class="modal window-1" id="modal-window"">
   <div class="modal-body">
      <input class="form-control" id="sku" name="sku" type="text" value="">
      <input class="form-control" id="name" name="name" type="text" value="">
   </div>
</div>

1 Ответ

0 голосов
/ 20 ноября 2018

Я проверил ваш код и заметил 2 вещи.

1) У вашего HTML-элемента div с идентификатором "modal-window" есть 1 ненужная двойная кавычка

2) Непонятно, где вы присваиваете значениепеременная counterВозможно, это главная проблема.

В противном случае вам не придется использовать событие onClick 2 раза.Если я получаю переменную "counter" из $ ('. Modal'). В каждом цикле у меня нет проблем с этим кодом и вашим HTML

$( document ).ready(function() {
    //$('.modal').each(function() {
    $('.modal').each(function(modalWindowIndex,modalWindow) {
        counter = modalWindowIndex + 1; //your html modal window has class window-1, but jQuery each() index starts with 0

        if($( '.window-'+counter ).has('input:text').length) {
            $('.window-'+counter).find('input').each(function() {
                $(this).on('click', function() {
                    console.log($(this).attr('id'));
                });
            });
        };
    });
});
...