2016-05-20 1 views
-2

Я хотел бы знать, есть ли шанс выбрать только родительский div, а не его дочерний элемент. Простой пример будет таким:Event.target. Выберите родительский элемент вместо потомка

<!DOCTYPE html> 
<html> 
<body onclick="myFunction(event)"> 
    <div style="border: solid black 2px"> 

    <p>Click on a paragraph. An alert box will alert the element 
     that triggered the event.</p> 

    <p><strong>Note:</strong> The target property returns the element that 
     triggered the event, and not necessarily the eventlistener's element.</p> 
</div> 
<script> 
    function myFunction(event) { 
    alert(event.target.nodeName); 
    } 
</script> 
</body> 
</html> 

То, что я хочу, это просто, я хочу, чтобы нажать на DIV (не возражает, если он находится на р наклейках) и получать ГЗС, что ДИВ были щелкнули. Теперь, если я нажимаю на метки p, я получаю p msg.

Дело в том, что я пытаюсь выбрать div вместо метки p, например, чтобы изменить весь его цвет. Спасибо вам всем.

+0

http://stackoverflow.com/questions/2728252/jquery-stoppropagation-bubble -down или вы можете использовать css для удаления событий указателя для p-тэгов – Pete

ответ

0
function myFunction(event) { 
alert(event.target.parentNode.nodeName); 
} 

попробовать это

+0

Спасибо, это более или менее то, что я хотел! – Metxaniz

0
$('div').on('click', function(event) { 
    alert(event.target.nodeName); 
}); 

Просто в этом случае при щелчке любого div появится предупреждение с его именем nodeName.

То, как вы это сделали, будет означать, что везде, где вы нажимали на весь документ, он захватывал бы этот элемент как цель. Таким образом, он может захватить p внутри div, а не сам div.

+2

Нет объяснений? – DontVoteMeDown

+1

И это не отвечает на вопрос. – Jai

+0

дать шанс человеку. я подал, а потом понял. – Hazonko

0

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

event.target.parentName 

Если событие может произойти на любом элементе, и вы хотите, чтобы искать определенный предок элемента на event.target, вы должны идти вверх по цепочке наследования. Или используйте jquery, у которого есть метод для этого.

Если ваш случай является простым, как в примере, вы могли бы просто

if (event.target.tagName == "DIV") return event.target; 
if (event.target.parentName.tagName == "DIV") return event.target.parentName; 
+0

event.target.parentName.nodeName, это нормально, спасибо! – Metxaniz

+0

Используйте кнопку upvote для «спасибо» – C14L

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