我有一个添加按钮,可以创建一行字段,根据用户输入我想执行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();
}
}
由于某种原因,只创建了一行与用户输入无关的行。出现这种情况的原因是什么?
答案 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();
}
});
}