3

我到处寻找关于如何阻止事件冒泡发生的代码,我从 Quirksmode 网站上找到了一个代码,它是这样的:

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

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

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

基本上我有 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' 事件处理程序上?

先感谢您。

4

3 回答 3

2

整个 doSomething 就是事件处理程序本身。如果没有参数,您只需完全注册事件即可。“e”参数由 JavaScript 运行时本身提供。

于 2010-09-08T13:48:22.407 回答
1

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

于 2010-09-08T13:51:06.533 回答
0

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

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

于 2010-09-08T13:53:52.067 回答