Примите во внимание следующее:

<div onclick="alert('you clicked the header')" class="header">
  <span onclick="alert('you clicked inside the header');">something inside the header</span>
</div>

Как я могу сделать так, чтобы, когда пользователь нажимает на диапазон, он не запускал div event.stopPropagation ()

Использование Для IE: Глядя на вывод

<span onclick="event.stopPropagation(); alert('you clicked inside the header');">something inside the header</span>

Первый аргумент в W3C-совместимом браузере (Chrome, Firefox, Safari, IE9) window.event.cancelBubble = true

<span onclick="window.event.cancelBubble = true; alert('you clicked inside the header');">something inside the header</span>

Есть два способа получить объект события изнутри функции:

  1. Если вам нужно поддерживать устаревшие браузеры, которые не поддерживают следуйте рекомендациям W3C, обычно внутри функции вы используете что-то вроде следующего:
  2. Часть кода, в которой мы создание массива функций с помощью ajax для отправки:

, который проверяет сначала одну, а затем другую и сохраняет то, что было найдено внутри переменной события. Однако в встроенном обработчике событий нет коллекции

function(e) {
  var event = e || window.event;
  [...];
}

, которая всегда доступна и ссылается на полный набор аргументов, передаваемых функции: e только дает arguments Однако, вообще говоря, вам следует избегать встроенных обработчиков событий, если вам нужно на что-нибудь сложное, как прекращение распространения. Написание ваших обработчиков событий отдельно и присоединение их к элементам — гораздо лучшая идея в среднесрочной и долгосрочной перспективе, как для удобочитаемости, так и для удобства обслуживания.

onclick="var event = arguments[0] || window.event; [...]"

Имейте в виду, что window.event не поддерживается в FireFox, и, следовательно, оно должно быть примерно таким:

Или вы можете использовать стандарт W3C для FireFox:

e.cancelBubble = true

Если вы хотите стать модным , вы можете сделать это:

e.stopPropagation();

Используйте эту функцию, она проверит наличие правильного метода.

function myEventHandler(e)
{
    if (!e)
      e = window.event;

    //IE9 & Other Browsers
    if (e.stopPropagation) {
      e.stopPropagation();
    }
    //IE8 and Lower
    else {
      e.cancelBubble = true;
    }
}

У меня была та же проблема — окно ошибки js в IE — насколько я вижу, это прекрасно работает во всех браузерах (event.cancelBubble = true выполняет работу в IE)

function disabledEventPropagation(event)
{
   if (event.stopPropagation){
       event.stopPropagation();
   }
   else if(window.event){
      window.event.cancelBubble=true;
   }
}

объект как оболочка нативного события.

onClick="if(event.stopPropagation){event.stopPropagation();}event.cancelBubble=true;"

. Это сработало для меня

<script>
function cancelBubble(e) {
 var evt = e ? e:window.event;
 if (evt.stopPropagation)    evt.stopPropagation();
 if (evt.cancelBubble!=null) evt.cancelBubble = true;
}
</script>

<div onclick="alert('Click!')">
  <div onclick="cancelBubble(event)">Something inside the other div</div>
</div>

Для веб-страниц ASP.NET (не MVC) вы можете использовать Sys.UI.DomEvent или передать событие в качестве параметра внутренней функции:

<div onclick="event.stopPropagation();" ...

и в someFunction:

<div onclick="someFunction(event);" ...

, в IE вам необходимо:

function someFunction(event){
    event.stopPropagation(); // here Sys.UI.DomEvent.stopPropagation() method is used
    // other onclick logic
}

2 jQuery эту страницу Это также работает — в HTML-ссылке используйте onclick с return, как здесь: И тогда функция comfirmClick () должна выглядеть следующим образом:

event.cancelBubble = true

Почему бы просто не проверить, какой элемент был нажат? Если вы щелкаете что-то,

<a href="mypage.html" onclick="return confirmClick();">Delete</a>

присваивается элементу, по которому щелкнули,

function confirmClick() {
    if(confirm("Do you really want to delete this task?")) {
        return true;
    } else {
        return false;
    }
};

Если цель и элемент не равны, это было событие, которое распространялось вверх. window.event.target javascript — Контроллер не является функцией, получил неопределенное определение при глобальном определении контроллеров значения этого {{}} этого свойства выбранный элемент также может быть передан в качестве аргумента.

Если цель и элемент не равны, это был событие, которое распространилось вверх.

function myfunc(el){
  if (window.event.target === el){
      // perform action
  }
}
<div onclick="myfunc(this)" />
<div onclick="alert('you clicked the header')" class="header">
  <span onclick="alert('you clicked inside the header'); event.stopPropagation()">
    something inside the header
  </span>
</div>