咱們在jQuery基礎教程之如何註冊以及觸發自定義事件這篇文章中,有用到今天要講的trigger方法。
今天咱們來簡單看看jquery中的trigger何triggerHandler方法的區別:
trigger( event, [data] )
在每個匹配的元素上觸發某類事件。
這個函數也會致使瀏覽器同名的默認行爲的執行。好比,若是用trigger()觸發一個’submit’,則一樣會致使瀏覽器提交表單。若是要阻止這種默認行爲,應返回false。
你也能夠觸發由bind()註冊的自定義事件jquery
$("p").click( function (event, a, b) { // 一個普通的點擊事件時,a和b是undefined類型 // 若是用下面的語句觸發,那麼a指向"foo",而b指向"bar"} ).trigger("click", ["foo", "bar"]);
triggerHandler( event, [data] )
這個特別的方法將會觸發指定的事件類型上全部綁定的處理函數。但不會執行瀏覽器默認動做.
若是你對一個focus事件執行了 .triggerHandler() ,瀏覽器默認動做將不會被觸發,只會觸發你綁定的動做:瀏覽器
爲了讓你們更好地理解這二者的區別,我在網上找來一個很棒的例子: app
<button id="old">.trigger("focus")</button> <button id="new">.triggerHandler("focus")</button><br><br> <input type="text" value="To Be Focused"> <script>$(function(){ $("#old").click(function(){ $("input").trigger("focus"); }); $("#new").click(function(){ $("input").triggerHandler("focus"); }); $("input").focus(function(){ $("<span>Focused!</span>").appendTo("body").fadeOut(1000); }); });</script>