Javascript Прослушивание всех тегов - PullRequest
0 голосов
/ 24 июня 2011

как я могу нажать прослушивание всех тегов диапазона?Задача так решить его без рамок

    var spancontainer = document.all.tags('span');
    spancontainer.onclick = function() {
        alert("hi");
    }
[...]
    <span>Hello</span><span>World</span>

в jQuery вроде бы:

$("span").click(function() {
    alert("hi");
});

Ответы [ 4 ]

2 голосов
/ 24 июня 2011

Вы можете использовать всплывающее событие . Присоедините обработчик событий к корню и прослушайте click события:

document.onclick = function(event) {
    event = event || window.event; // IE specials
    var target = event.target || event.srcElement; // IE specials

    if(target.nodeName === "SPAN") {
        alert('hi');
    }
};

Теперь это не будет работать, если внутри span есть другие элементы, и вы хотите захватить события click внутри span s. В этом случае вы должны пройти DOM:

document.onclick = function(event) {
    event = event || window.event; // IE specials
    var target = event.target || event.srcElement; // IE specials

    while(target.nodeName !== "SPAN" && target !== null) {
        target = target.parentNode;
    }

    if(target) {
        alert('hi');
    }
};
0 голосов
/ 24 июня 2011
var click_alert = function() {
    alert("hi");
};
var spans = document.getElementsByTagName('span');
for(var i = 0; i < spans.length; i++)
{
  spans[i].addEventListener("click", click_alert, false);
}

Вы можете написать оболочку, которая использует addEventListener или attachEvent для более широкой совместимости.

0 голосов
/ 24 июня 2011
var spans = document.getElementsByTagName('span');
for(var i = 0; i < spans.length; i++)
{
  // ...
}
0 голосов
/ 24 июня 2011
 var spans = document.getElementsByTagName('span');
 for(var i=spans.length-1; i>=0; i--){
    spans[i].onclick = function() {
        alert("hi");
    }
 }
...