如何使用事件冒泡取消

时间:2010-09-08 13:44:30

标签: javascript events event-bubbling

我到处寻找有关如何阻止事件冒泡的代码,我在Quirksmode网站上找到了一个代码:

function doSomething(e){
    if(!e) var e = window.event;
    e.cancelBubble = true;
    if(e.stopPropagation) e.stopPropagation();
}

但我不知道如何以及在何处使用它。 什么是'e'参数用作(或者应该作为'e'传递什么)? 是否在事件处理程序代码中调用此函数? ...等?

我需要一些帮助,请有人给我一些提示吗?

基本上我有4个元素都有一个名为'updateAvailableAttributes()的'onchange'处理程序,如下所示:

<select id="deliveryMethod" name="deliveryMethod" onchange="updateAvailableAttributes();"></select>

<select id="formatMethod" name="formatMethod" onchange="updateAvailableAttributes();"></select>

<select id="yearsMethod" name="yearsMethod" onchange="updateAvailableAttributes();"></select>

<select id="updateMethod" name="updateMethod" onchange="updateAvailableAttributes();"></select>

这是updateAvailableAttributes()脚本:

function updateAvailableAttributes() {
var form = document.forms["orderDefinition"];
form.elements["formChangeRequest"].value = "true";
$.ajax({
  type: "POST",
  url: "ajax/possibleValues.html",
  data: $("form#orderDefinition").serialize(),
  success: function(response){
    $('#usercontent .sleeve .toprow').html(response);

    applyValidation();
    radioButtonHighlightSelection();

  },
  error: function(response, ioArgs) {
         if (response.status == 601) {
             sessionTimedOut();
         } 
      }
});

// Display a "please wait" message
$("#waitingMsgOverlay, #waitingMsgBox, #waitingMsg, #waitingMsgParag").ajaxStart(function(){
      var map = document.getElementById("OrderMap");
      map.disableApplication();
      $(this).show();
      radioButtonHighlightSelection();
  }).ajaxStop(function(){
      var map = document.getElementById("OrderMap");
      map.enableApplication();
      $(this).hide();
      $("#toolpanel").height($("#orderMap").height());
      radioButtonHighlightSelection();
});}

我的问题是,如何将'doSomething(e)'与'updateAvailableAttributes()'合并到'onchange'事件处理程序中?

提前谢谢。

3 个答案:

答案 0 :(得分:2)

整个doSomething是事件处理程序本身。您只需完全按照没有参数的情况注册事件。 “e”参数由JavaScript运行时本身提供。

答案 1 :(得分:1)

e是事件。例如,如果你在另一个div中有一个div,并且它们都有一个名为doS​​omething的js点击处理程序。所以在onclick属性中使用onclick =“doSomething(event);”如果你单击内部div外部将不会处理它

答案 2 :(得分:0)

在DOM模型中,存在与元素相关联的各种事件,例如onclick。如果要处理任何事件,请将事件侦听器附加到元素。例如element.addEventListner(event,yourfunction,bubble)

请参阅此http://www.quirksmode.org/js/events_advanced.html