在for循环内触发查询单击事件

时间:2018-01-11 12:35:51

标签: javascript jquery for-loop click

我有一个添加按钮,可以创建一行字段,根据用户输入我想执行click()事件并自动创建行。

我有一个for循环来处理这个问题,其中click事件应该根据用户想要拥有的行数来触发。

这是代码,

//this will add the required number of rows
function createDoorSelections(doors){
    for (var index = 0; index < doors; index++) {
        //console.log("Creating door: "+ index);
        jQuery('.frm_add_form_row').click();
    }
}

由于某种原因,只创建了一行与用户输入无关的行。出现这种情况的原因是什么?

2 个答案:

答案 0 :(得分:1)

嗯,我假设doors的类型是Array对吗?如果是这样,在for循环中,它应该是以下

index < doors.length; 

更新:我测试了以下代码。您需要使用.trigger('click')来获得所需的输出。

触发器会执行您附加到类.frm_add_form_row的元素的click事件。有关.trigger()的详细信息,请阅读jQuery API documentation

下面的代码在启动时会执行附加到类.frm_add_form_row六次的元素的点击事件。

为了您的方便,这里有jsfiddle供您测试。

<html>
<body>
    <button class="frm_add_form_row">Click me</button>
</body>
<!-- Add your own jquery script import -->
<script src="jquery-3.2.1.js"></script>
<script>
    $(document).ready(function() {
        jQuery('.frm_add_form_row').click(function() {
            alert("clicked");
        });
        // Execute alert("clicked"); 6 times on load.
        createDoorSelections(6);
    });
    //this will add the required number of rows
    function createDoorSelections(doors){
        for (var index = 0; index < doors; index++) {
            //console.log("Creating door: "+ index);
            jQuery('.frm_add_form_row').trigger('click');
        }
    }
</script>
</html>

答案 1 :(得分:0)

你可以尝试这个解决方案吗

//this will add the required number of rows
function createDoorSelections(doors){
    setTimeout(function() {
      for (var index = 0; index < doors; index++) {
        //console.log("Creating door: "+ index);
        jQuery('.frm_add_form_row').click();
      }
    });
}