Обратите внимание на то, что решение tvanfosson будет не всегда работать, хотя в большинстве случаев это должно быть очень хорошо.
проблема, с которой конкретное решение состоит в том, что, если у Вас уже есть какой-либо ViewData или ModelState, Вы заканчиваете тем, что перезаписали все это с состоянием предыдущего запроса. Например, новый запрос мог бы иметь некоторые образцовые ошибки состояния, связанные с недопустимыми параметрами, передаваемыми действию, но те закончат тем, что были скрыты, потому что они перезаписываются.
Другая ситуация, где это не могло бы работать как ожидалось, состоит в том, если у Вас был Фильтр Действия, который инициализировал некоторые ошибки ViewData или ModelState. Снова, они были бы перезаписаны тем кодом.
Мы смотрим на некоторые решения для ASP.NET MVC, который позволил бы Вам более легко объединять состояние от двух запросов, поэтому останьтесь настроенными для этого.
Спасибо, Eilon
Вам нужен обработчик событий (это очень легко сделать в чем-то вроде jQuery), который улавливает щелчки для промежутков внутри div и запускает функцию, только если, например, у диапазона есть / не имеет определенного класса.
Присвойте диапазону идентификатор, присоедините к нему событие onclick и используйте
Пример jQuery
$("#spn2").click(function(event){
event.stopPropagation();
});
event.stopPropagation () : останавливает всплытие события для родительских элементов , предотвращая уведомление любых родительских обработчиков о событии.
Было бы разумно использовать библиотеку, но вы можете попробовать это (редактируется с целой страницей для тестирования):
<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>
с 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 для родительского элемента при щелчке дочернего элемента?
Возможное решение: укажите идентификатор диапазона и проверьте, разрешено ли щелкнуть идентификатор щелчка в вашей функции.
Плохая идея: вы не знаете, какой диапазон был выбран, поскольку вы вызываете функция из вашего div ...