2016-05-20 1 views
1

Я пытаюсь предотвратить определенные OnClick события детей элемента, которым управляет возвращение ложным из события MouseDown на контейнере, как так:Остановки события нажатия с помощью MouseDown работает только когда запуск оповещения

submit_container.mousedown(function(event){ 
    return false; 
}); 

Если я пишу свой код, как это, он не работает. Однако, если добавить предупреждение первым, то нажмите событие, на самом деле остановился:

submit_container.mousedown(function(event){ 
    alert('Alert'); 
    return false; 
}); 

Тот же вопрос упоминается here, но, к сожалению, ни один из ответов не решить эту проблему.

EDIT: JSfiddle example. Мне нужно поведение второго звена, но без необходимости запуска предупреждения

+0

Я не уверен, я следую полностью. Можете ли вы предоставить jsfiddle? Я думаю, что вы можете искать event.stopPropagation(), но опять же, я не могу сказать наверняка. – tpdietz

+0

попробуйте добавить event.preventBubble()? – Popatop15

+0

@tpdietz Добавил JSfiddle к вопросу – Radical

ответ

0

Вы используете jQuery? Попробуйте метод «preventDefault»:

submit_container.mousedown(function(event){ 
    event.preventDefault(); 
    return false; 
}); 
+0

Этот метод использовался в ответе, который он связал в своем вопросе, который не работал. – Popatop15

+0

Действительно, я пробовал все комбинации preventDefault, preventPropagation, preventImmediatePropagation, все с аналогичными результатами. – Radical

+0

Кажется, что для предотвращения поведения браузера в этом случае вам следует использовать событие «click». –

1

Мышь работает для класса контейнеров. Ваша проблема в том, что href имеет прикрепленное к клику событие, а не мышь вниз. Таким образом, вы должны использовать onclick в контейнере или href, поскольку произойдет событие «Размножение» и пузырь до родителя. Вы все равно можете остановить это.

Пример.

submit_container.click(function(event){ 
    event.stopPropagation(); 
    event.preventDefault(); 
    return false; 
}); 

Надеется, что это помогает

+0

Это действительно помогает в моей проблеме, описанной выше, поэтому уже благодарю вас за это! Моя фактическая проблема оказывается немного более сложной, хотя. У моего элемента в контейнере есть собственный атрибут onclick, к которому я хочу позвонить в другой момент времени (так что onclick я в основном сначала хочу 'preventDefault', затем делать что-то еще и в конечном итоге все еще запускать код onclick). См. [This jsfiddle] (https://jsfiddle.net/70tg2gfu/). Как вы можете видеть, нажатие ссылки действительно не открывает новую вкладку, но она все равно выполняет событие onclick. Есть идеи по этому поводу? – Radical

Смежные вопросы