#javascript #jquery
#javascript #jquery
Вопрос:
У меня есть два div с некоторыми элементами в них (изображения, текст и т.д.), И мне нужно знать, какой div содержит элемент, на который был нажат. Например:
- Если я нажму на любой элемент в div 1, затем перенаправлю на «pagina1.php «
- Если я нажму на любой элемент в div 2, затем перенаправлю на «pagina2.php «
Как я могу это сделать в jquery?
Ответ №1:
Просто привяжите обработчики кликов к DIV (вашим оболочкам содержимого):
$( '#div1, #div2' ).click( function ( e ) {
this // references the DIV inside which the click occured
e.target // references the element that was clicked
});
Ответ №2:
Вы можете привязать событие щелчка ко всем элементам внутри вашего divs, вы можете узнать здесь, как это сделать http://api.jquery.com/click /, вы могли бы сделать что-то подобное для каждого div:
$('div#1 > *').click(function(e) {
//This will tell you the tagname of the element that was click.
alert($(this).tagName);
//this will redirect you to pagina1.php might not be the best choice
window.location.replace('pagina1.php');
});
И вы должны сделать то же самое для div # 2.
Вы должны заметить, что селектор, который я создал, предназначен только для первых дочерних элементов элемента div.
Saludos.
Комментарии:
1. Привязка обработчиков щелчков ко всем дочерним элементам — это то, чего вы хотите избежать. Делегирование событий позволяет привязать только один обработчик щелчка к общему предку (в данном случае DIV)…
2. Я думаю, что ваше решение лучше, спасибо за совет, теперь я буду совершенствовать свои навыки с помощью jquery
Ответ №3:
$('div.element-1 > *').click(function() { alert('first div childs') });
Ответ №4:
Я почти уверен $('').click
, что это работает почти для всех элементов HTML (включая DIV). Это потому, что событие всплывает по цепочке родительских элементов. Итак, что-то вроде:
<script>
$(document).ready(function()
{
$("#div1").click(function() { alert("something in div1 clicked"); }
$("#div2").click(function() { alert("something in div2 clicked"); }
$("#div3").click(function() { alert("something in div3 clicked"); }
}
</script>
</head>
<body>
<div id="div1"><table><tr><td><span>blah</span></td></tr></table><div>
<div id="div2"><span>blah2</span><div>
<div id="div3"><img src=""><div>