как использовать отмену всплытия событий - PullRequest
3 голосов
/ 08 сентября 2010

Я везде искал код о том, как остановить возникновение всплывающих событий, и нашел его на веб-сайте Quirksmode, который выглядит так:

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

Но я не знаю, как и где его использовать. Для чего используется параметр «e» (или что следует передать как «e»)? Эта функция должна вызываться в коде обработчика событий? ... и т.д.

Мне нужна помощь, может, кто-нибудь подскажет?

В основном у меня есть 4 элемента, которые имеют обработчик onchange, называемый updateAvailableAttributes (), например:

<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 ]

2 голосов
/ 08 сентября 2010

Весь doSomething - это сам обработчик событий.Вы просто регистрируете событие точно так же, как если бы не было параметров.Параметр "e" предоставляется самой средой выполнения JavaScript.

1 голос
/ 08 сентября 2010

е это событие. Например, если у вас есть div внутри другого div и у них обоих есть обработчик js click с именем doSomething. поэтому в атрибуте onclick используйте onclick = "doSomething (event);" если вы нажмете на внутренний div, то external не будет обрабатывать его сейчас

0 голосов
/ 08 сентября 2010

В модели DOM существуют различные события, связанные с элементом, например, onclick.Если вы хотите обработать какое-либо событие, вы присоединяете слушателя события к элементу.например, element.addEventListner(event,yourfunction,bubble).

см. http://www.quirksmode.org/js/events_advanced.html

...