为什么我需要在jquery中使用double onClick事件?

时间:2018-11-20 18:39:42

标签: jquery function onclick each

我需要对以下内容进行澄清。

为什么我需要指定2次onClick事件? (当我这样做时,它确实满足了我的需求)一次在$('.modal').each(function()函数内部,一次在$('.window-'+counter).find('input').each函数内部

如果我仅使用第一个onClick函数,则console.log返回屏幕上所有表单的所有输入ID。

当我仅使用最后一个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 :(得分:1)

我测试了您的代码,发现两件事。

1)您ID为“ modal-window”的HTML div中有1个不必要的双引号

2)不清楚您将值分配给“ counter”变量的位置。也许这是主要问题。

否则,您将不必使用onClick事件2次。如果我从$('。modal')。each循环中获得“计数器”变量,则此代码和您的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'));
                });
            });
        };
    });
});