jQuery识别来自用户的点击,而不是触发

ric*_*uck 3 javascript jquery

所以我有代码:

function randomClick(interval){
        $(".thumbnail_holder .nav li:not(.empty):eq("+select+") a").trigger("click");
        window.randomTimer = setTimeout("randomClick("+interval+")", interval);
}
Run Code Online (Sandbox Code Playgroud)

我需要它,所以当用户点击时".thumbnail_holder .nav li a,它会清除间隔,例如

$(".thumbnail_holder .nav li a").on("click", function(e){
    e.preventDefault();
    clearTimeout(window.randomTimer);
});
Run Code Online (Sandbox Code Playgroud)

但是上面的代码也发生在.trigger("click");.

这个.on功能有什么办法可以区分两者吗?

Mat*_*att 5

e.which当事件被调用时将被定义trigger(),但是1当你左键单击它时.

$(".thumbnail_holder .nav li a").on("click", function(e){
    e.preventDefault();

    if (typeof e.which !== "undefined") {
        clearTimeout(window.randomTimer);
    }
});
Run Code Online (Sandbox Code Playgroud)

其他选项是在手动触发时传递一些数据,并在事件处理程序中检查它(参见中的extraParameters参数)trigger().

function randomClick(interval){
    $(".thumbnail_holder .nav li:not(.empty):eq("+select+") a").trigger("click", [true]);
    window.randomTimer = setTimeout("randomClick("+interval+")", interval);
}

$(".thumbnail_holder .nav li a").on("click", function(e, wasTrigger){
    e.preventDefault();

    if (!wasTrigger) {
        clearTimeout(window.randomTimer);
    }
});
Run Code Online (Sandbox Code Playgroud)