dru*_*een 7 jquery triggers click
这个问题看起来像 In Jquery,我如何在程序和用户点击之间分辨?
但我无法得到它,我的代码
<div class="sample_class" onclick="sample_fn(arg1,arg2,arg3,arg4, e);" ></div>
<div class="trigger_class" onclick="trigger_fn()></div>
function sample_fn(arg1,arg2,arg3,arg4, e){
console.log(e) ;
console.log(e.isTrigger);
console.log(e.hasOwnProperty('originalEvent'));
}
function trigger_fn(){
$(".sample_class").trigger("click")
}
Run Code Online (Sandbox Code Playgroud)
点击div.sample_class我进入控制台对象undefined false
点击div.tigger_class我进入控制台同样的事情对象undefined false
我无法区分这两次点击.提前致谢
更新:从jQuery 1.7+开始,事件对象(e在下面的代码中)对象将包含一个名为的属性e.isTrigger,true如果事件被触发,则触发未定义; 这是未记录的,因此在使用之前请检查此(演示).如果使用旧版本的jQuery,请使用以下代码.
将标志传递给您的函数可能更容易.这是一个演示:
HTML
<button>Trigger a click below</button>
<div id="test">Click Me</div>?
Run Code Online (Sandbox Code Playgroud)
脚本
?$('#test').click(function(e, triggered){
var msg = (triggered) ? ', triggered' : '';
console.log('clicked' + msg);
});??
$('button').click(function(){
// pass a true flag to the click function to indicate
// it's been triggered
$('#test').trigger('click', true);
});
Run Code Online (Sandbox Code Playgroud)
更新:data-attributes可以包含有效的JSON,它会自动转换为对象(demo):
<div class="test" data-args='{ "quantity": 1, "type": "pizza", "extra1": "peperoni", "extra2": "cheese", "extra3": "cheesy bread" }'>Click Me</div>
Run Code Online (Sandbox Code Playgroud)
请注意,data-arg使用单引号来包含JSON,但内部的JSON必须在每个键和值周围使用双引号(除非它是数字).
然后使用数据方法提取信息:
var args = $(this).data('args');
Run Code Online (Sandbox Code Playgroud)
或者,您可以为每个参数(演示)创建单独的数据属性:
<div class="test" data-quantity="1" data-type="pizza" data-extra1="peperoni" data-extra2="cheese" data-extra3="cheesy bread">Click Me</div>
Run Code Online (Sandbox Code Playgroud)
然后使用从元素中收集所有数据,如下所示:
var args = $(this).data();
Run Code Online (Sandbox Code Playgroud)