Предотвратите JavaScript onclick на дочернем элементе

Обратите внимание на то, что решение tvanfosson будет не всегда работать, хотя в большинстве случаев это должно быть очень хорошо.

проблема, с которой конкретное решение состоит в том, что, если у Вас уже есть какой-либо ViewData или ModelState, Вы заканчиваете тем, что перезаписали все это с состоянием предыдущего запроса. Например, новый запрос мог бы иметь некоторые образцовые ошибки состояния, связанные с недопустимыми параметрами, передаваемыми действию, но те закончат тем, что были скрыты, потому что они перезаписываются.

Другая ситуация, где это не могло бы работать как ожидалось, состоит в том, если у Вас был Фильтр Действия, который инициализировал некоторые ошибки ViewData или ModelState. Снова, они были бы перезаписаны тем кодом.

Мы смотрим на некоторые решения для ASP.NET MVC, который позволил бы Вам более легко объединять состояние от двух запросов, поэтому останьтесь настроенными для этого.

Спасибо, Eilon

7
задан Paul 16 September 2009 в 09:01
поделиться

5 ответов

Вам нужен обработчик событий (это очень легко сделать в чем-то вроде jQuery), который улавливает щелчки для промежутков внутри div и запускает функцию, только если, например, у диапазона есть / не имеет определенного класса.

2
ответ дан 6 December 2019 в 06:14
поделиться

Присвойте диапазону идентификатор, присоедините к нему событие onclick и используйте

Пример jQuery

$("#spn2").click(function(event){
  event.stopPropagation();  
});

event.stopPropagation () : останавливает всплытие события для родительских элементов , предотвращая уведомление любых родительских обработчиков о событии.

17
ответ дан 6 December 2019 в 06:14
поделиться

Было бы разумно использовать библиотеку, но вы можете попробовать это (редактируется с целой страницей для тестирования):

<html><head></head>
<body>
<script type="text/javascript"><!--
function manualToggle(val)
{
    alert(val.id);
}

--></script>

<div id="test" onclick="manualToggle(this);">
    <span>Allowed to click</span>
    <span onclick="event.cancelBubble=true;if (event.stopPropagation) event.stopPropagation();">Not allowed to click</span>
    <span>Allowed to click</span>
</div>
</body>
</html>
7
ответ дан 6 December 2019 в 06:14
поделиться

с mootools вы можете использовать метод stopPropagation :

$('myChild').addEvent('click', function(ev){
    ev.stopPropagation(); // this will prevent the event to bubble up, and fire the parent's click event.
});

см. http://mootools.net/docs/core/Native/Event#Event:stopPropagation

также видят очень похожий вопрос: Как я могу остановить срабатывание события onclick для родительского элемента при щелчке дочернего элемента?

1
ответ дан 6 December 2019 в 06:14
поделиться

Возможное решение: укажите идентификатор диапазона и проверьте, разрешено ли щелкнуть идентификатор щелчка в вашей функции.

Плохая идея: вы не знаете, какой диапазон был выбран, поскольку вы вызываете функция из вашего div ...

0
ответ дан 6 December 2019 в 06:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: