我是FE,也是Fe

          前端來源于不斷的點滴積累。我一直在努力。

          統計

          留言簿(15)

          閱讀排行榜

          評論排行榜

          使用javascript觸發事件

          javascript中的事件時通過事件監聽的機制來實現,但是在某些情況下需要使用javascript手動觸發事件。
          <input type="button" id="btn1" name="" value="test" onclick="alert('click');" />
          <input type="button" id="" name="" value="fire" onclick="fire();" />
          如果fire按鈕來觸發test按鈕的onclick事件,fire方法可以這么寫的:
                  function fire(){
                      
          var evt = window.event?window.event:fire.caller.arguments[0];//獲取event對象
                      var o= document.getElementById("btn1");
                      
          if(o.fireEvent){//IE
                          o.fireEvent("onclick",evt);//IE下可以直接使用fireEvent方法觸發事件
                      }else{//other browsers
                          //創建一個對象
                          var event = document.createEvent("MouseEvents");
                                      
                          
          //設置event對象屬性
                          event.initMouseEvent("click"truetrue, document.defaultView, 00000
                                               
          falsefalsefalsefalse0null);
                                      
                          
          //觸發事件
                          o.dispatchEvent(event); 
                      }
                  }

          最開始看到這些代碼是在Wrox.Professional.JavaScript.For.Web.Developers.2nd書中,我迅速想到jquery中是否有類似的實現?事實上我連dispatchEvent都沒有找到




          事實上我想復雜了,要觸發onclick事件,直接用oBtn.click()方法即可,沒有瀏覽器兼容問題。jquery中就是直接用這個方法的。
          $(function(){
                      $(
          "#jqFire").click(function(){
                          $(
          "#btn1").click();//works
                          o.click();//also works
                      });
                  });

          關于上面提到的createEvent/initMouseEvent/dispatchEvent/fireEvent方法可以參考下列資料:

          http://stackoverflow.com/questions/911586/javascript-simulate-mouse-over-in-code

          http://stackoverflow.com/questions/460644/trigger-an-event-with-prototype 這個帖子介紹了幾種事件觸發的方法

          http://jehiah.cz/a/firing-javascript-events-properly 一個觸發事件方法封轉

          http://code.google.com/p/jqueryjs/source/browse/trunk/plugins/simulate/jquery.simulate.js?r=6163 jquery.simulate.js的源代碼



          posted on 2010-11-29 00:17 衡鋒 閱讀(1099) 評論(0)  編輯  收藏 所屬分類: Web開發

          主站蜘蛛池模板: 澄城县| 三江| 常德市| 郁南县| 北安市| 桃园市| 新田县| 浦江县| 宁陵县| 文化| 额尔古纳市| 贺兰县| 两当县| 阳高县| 沙河市| 鄂托克旗| 手机| 西和县| 兴宁市| 诸暨市| 宿州市| 金坛市| 涿鹿县| 石嘴山市| 德昌县| 宝清县| 黄大仙区| 天全县| 海门市| 东方市| 女性| 磐安县| 通海县| 论坛| 长葛市| 云安县| 吴堡县| 尚志市| 百色市| 海丰县| 宁南县|