jquery中,.trigger('click');事件和.click();的应用是否同一个道理?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery中,.trigger('click');事件和.click();的应用是否同一个道理?相关的知识,希望对你有一定的参考价值。
参考技术A 应该效果是一样的。但是trigger的用途比较广泛,最突出的就是它可以触发自定义委派事件,举个例子$("p").bind("myEvent", function (event, message1, message2)
alert(message1 + ' ' + message2);
);
$("p").trigger("myEvent", ["Hello","World!"]);追问
效果是什么样子的,看不太懂,能不能写完整一点呢。谢谢!
追答首先是为p标签绑定了一个自定义事件myEvent,效果是alert出参数2 message1和参数3 message2
第二句是触发p标签的自定义事件myEvent,注意参数1是自定义事件名称,参数2是一个数组,这里的数组元素分别对应绑定事件中除event之外的参数,这句的执行效果是alert("Hello World!")
呵呵~~~还是不太懂,能不能写到一个html里面,我运行测试一下哈.谢谢.
追答试试这个简单的例子
$("p").bind("mouseoverout", function (event, message1, message2)
alert(message1 + ' ' + message2);
);
$("p").mouseover(function()
$(this).trigger("mouseoverout", ["mouse","over!"]);
);
$("p").mouseout(function()
$(this).trigger("mouseoverout", ["mouse","out!"]);
)
jquery 1.9.1 .trigger() 没有将参数传递给点击处理程序
【中文标题】jquery 1.9.1 .trigger() 没有将参数传递给点击处理程序【英文标题】:jquery 1.9.1 .trigger() not passing arguments to click-handler 【发布时间】:2013-02-26 01:22:47 【问题描述】:在 jQuery 1.9.1 中,参数不会从触发器传递到单击处理程序,而在 jquery 1.7.2 中它们可以很好地传递。
举例说明:
<!doctype html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<!--script src="http://code.jquery.com/jquery-1.7.2.min.js"></script-->
</head>
<body>
<input id="test" type="checkbox">
<button id='trigger'>trigger</button>
</body>
<script>
$('#test').bind('click',
function (e, data)
if (typeof data == 'undefined')
alert('no data passed');
return;
alert('first passed=' + data.passed1 + ' second passed='+data.passed2);
);
$('#trigger').click(
function (e)
$('#test').trigger('click',passed1:'first',passed2:'second');
);
</script>
</html>
当我使用 jquery-1.7.2.js 时,它仍然可以正常工作。
我错过了什么?请帮帮我。
【问题讨论】:
你为什么在script
之前关闭body
??
经过测试,似乎没有一种语法可以工作,似乎是一个错误。
看起来像一个奇怪的错误。 jsfiddle.net/xHVDx/1
您的原始语法似乎适用于非复选框:jsfiddle.net/9mD6a 它也适用于具有除单击之外的事件的复选框jsfiddle.net/9mD6a/1 似乎是一个极端错误。
这仍然适用于 1.8.3,但似乎支持到此为止。
【参考方案1】:
这是一个已知问题:http://bugs.jquery.com/ticket/13353
解决方法是使用 .triggerHandler() 代替,例如:
$('#trigger').click(function (e)
var $test = $('#test');
$test
.prop('checked', !$test.prop('checked'))
.triggerHandler('click',passed1:'first',passed2:'second');
);
JSFiddle:http://jsfiddle.net/antishok/xHVDx/2
在任何情况下触发点击都是邪恶的(如果只是为了运行回调)
【讨论】:
回应@antishok:不要以这种方式触发点击。将处理程序代码分离到自己的函数中,然后直接调用它。以上是关于jquery中,.trigger('click');事件和.click();的应用是否同一个道理?的主要内容,如果未能解决你的问题,请参考以下文章
jquery 新手想问一下trigger('click')问题
jquery中radio元素的trigger("change")不能触发的问题
复选框点击事件会中断以运行代码,但$ .trigger('click')只会在Chrome中识别,而不会在Firefox中识别。为什么?