代码之家  ›  专栏  ›  技术社区  ›  Shaoz

如何使用事件冒泡取消

  •  3
  • Shaoz  · 技术社区  · 14 年前

    我到处都在寻找如何阻止事件冒泡发生的代码,我在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 回复  |  直到 14 年前
        1
  •  1
  •   Vinay B R    14 年前

    E是事件。例如,如果在另一个DIV中有一个DIV,并且这两个DIV都有一个名为dosomething的JS单击处理程序。因此,在on click属性中,使用on click=“dosomething(event);”如果您单击内部的DIV outer将不会立即处理它。

        2
  •  2
  •   karim79    14 年前

    整个dosometing是事件处理程序本身。如果没有参数,您只需注册事件。“e”参数由javascript运行时本身提供。

        3
  •  0
  •   ajay_whiz    14 年前

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

    看到这个 http://www.quirksmode.org/js/events_advanced.html