2013-11-15 4 views
1

Я новичок в javaScript и jQuery. Как это можно назвать событием клика родительского элемента при нажатии на его дочерний элемент? У меня есть эта структура в моем коде:триггер родительского события щелчка при нажатии дочернего элемента

<ul id="pc5"> 
    <li><a href="#">book</a> 
    </li> 
</ul> 

Я хочу что-то вроде этого:

$("a").click(ul.click); 

Любая помощь будет оценена.

EDIT: в моей функции щелчка ul мне нужен атрибут ul id. что-то вроде этого:

ul.click(function(e){alert(e.target.id); 

поэтому, когда ссылка нажата, event.target не является элементом ul.

+4

при щелчке дочернего элемента событие щелчка родителя также будет уволен из-за разбухания событий, если распространение события не предотвращается дочерним устройством –

+0

Вам не нужно это делать - событие 'click' от элемента' a' будет пузыриться до 'ul', если вы не используете' return false; 'или 'event.stopPropagation' в обработчике' a'. –

ответ

1

Вам не нужно запускать события щелчка элементов при нажатии дочерних элементов, событие click bubbles до дерева деревьев, если вы не используете stop propagation.

Здесь вы можете увидеть его работы: jsfiddle просто нажмите на синюю пролете, событие щелчка будет пузырек до ул :)

Обновленный вопрос

Если вы хотите, идентификатор ул, просто чтобы:

$('ul li a').click(function() { 
    var id = $(this).closest('ul').attr('id'); 
}); 

что было бы еще проще, так как:

$('ul').click(function() { 
    var id = $(this).attr('id'); 
    alert(id); 
}); 

Working fiddle

Это должно работать, если вы нажмете на, так как он пузырится

+0

Спасибо за ваш ответ. см. отредактированную часть вопроса. –

+0

см. Обновленный ответ – Alex

+0

Вы добавляете событие .click в UL, которое является родителем в этом случае. OP хочет добавить событие .click для ребенка (согласно его вопросу - он может захотеть перепроектировать, что в зависимости от того, что ему нужно делать). – user1021726

1

Вы должны прочитать о event propagation в JQuery. В нескольких словах: когда пользователь нажимает на a, тогда событие будет размножаться в дереве DOM.

+0

Спасибо за ваш ответ. См. Отредактированную часть вопроса. –

0

я имел HTML как это:

<a href="?chk=1"> 
    <input id="CHK_1" name="CHK[1]" type="checkbox"> 
    <span>CHK 1</span> 
</a> 

, где должен был флажок, чтобы быть проверено/непроверенные только со стороны сервера. По причине я не знаю «нажмите кнопку» не кипели от флажка на ссылку, так я использовал JS код так:

$(document).on('click', '[id^="CHK_"]', function (e){ 
    window.open($(this).parent().attr('href'), '_self'); 
    e.preventDefault(); 
}); 
Смежные вопросы