我试图通过使用(#td).trigger('点击')自动触发td元素。它有效,但我不希望用户实际点击td本身,我只是想让它自动化。我需要触发td元素来启动下一个事件。如何在不给用户触发元素的情况下使用JQuery或JS触发元素。这就是我现在所拥有的......
$(td4).trigger('click');
//will trigger td4 which eventually will trigger td5
$(td5).trigger('click');
//which will go on to td6 and so on
正如我之前所说,它有效。然而,用户可以绕过这些方法并直接进入td20,例如只需单击它即可。我希望他们经历一个自动化过程,他们必须按指定顺序浏览所有td。任何帮助,将不胜感激。
答案 0 :(得分:1)
首先,如果您不希望用户点击tds,那么我就没有看到点击处理程序和触发通过脚本点击的任何目的。
但是,既然你问过,下面是一种区分实际用户点击和通过代码触发的用户点击的方法。
你可以使用event.originalEvent.isTrusted标志检查用户是否点击了tds并相应地处理它,这是一支用于演示的笔Codepen demo
$("tr > td").click(function(e){
if(e.originalEvent && e.originalEvent.isTrusted) {
console.log("User Click - Caught : " + e.originalEvent.isTrusted);
e.preventDefault();
} else {
console.log("Clicked automatically "+ $(this).attr("id"));
$(this).next().trigger("click");// click the next td
// now trigger next td click
// Do your stuff here
}
});
var autoClick = function(){
$("#td1").trigger("click");
}

td {
width:30px;
height:30px;
border:1px solid;
}

<table cellspacing="15">
<tr>
<td id="td1">td1</td>
<td id="td2">td2</td>
<td id="td3">td3</td>
</tr>
</table>
<button onclick="autoClick()">Click Div Through Code</button>
&#13;
event.originalEvent.isTrusted是浏览器在用户点击某个元素时设置的标志,当脚本触发click事件时,它不会被设置。
答案 1 :(得分:0)
编写一个处理逻辑的函数,并通过$(document).ready(yourFn())调用它;
使用jQuery来定位td的想法让它迭代它们并调用每个绑定的事件处理程序是正确的吗?如果没有,请进一步澄清。
来自code pen以下的东西。您可以根据需要将事件类型替换为触发器参数,模糊,单击等。:
post_id