需要获取第一个子a并使用结果创建click事件

时间:2013-06-23 09:51:35

标签: javascript javascript-events

我正在尝试创建一个JavaScript程序,通过DOM查找第一个<a href>而不是mailto: - 它需要是一个“真实链接”并返回{{1价值。然后我需要用结果创建一个href事件。

我需要它的是一个HTML封装帖子的作者的东西。 这需要是可点击的 - 但不使用标记中的onclick。 它必须是一个事件 - 在HTML标记中不可见。

包装click也应该是可点击的,但不会受到上述内容的影响。

标记是这样的:

section

/ *编辑* /

确定找到了这个。

<section>
  <figure>
    <img>
  </figure>
  <div>
    <h2>
    <p>
      <a href="mailto:.."></a>
      <a href="THE VALUE I NEED"></a>
    </p>
  </div>
</section>

这是我在FireBug的Event窗口中从我试图获取此功能的网站获得的字符串。有人理解这个吗?该字符串是它的工作原理。我刚刚复制了整个js,它可以在我的网站上运行。但我想隔离这个特定的功能,因为原始文件很大。任何人?

1 个答案:

答案 0 :(得分:1)

http://jsfiddle.net/LrgQH/

var links = document.getElementsByTagName('a');
var link, i;

for(i=0; i<links.length; i++) {
    link = links[i];
    if (link.href.indexOf('mailto:') !== 0) {
        break;   
    }
}

link.onclick = function(e) {
   alert('allo');
}

Vanilla JS应该在任何地方工作。

编辑:

http://jsfiddle.net/LrgQH/2/

这应该这样做,你必须阻止其他链接工作,但它变得复杂。请记住,在Javascript中,事件系统通过冒泡工作。最深的对象将获得click事件,然后如果它可以处理它,它将处理它。处理事件时,它可以防止事件进一步发生,事件不会进一步传播。如果它决定不阻止事件,它将转到父元素,依此类推,直到它到达HTML元素。

如果元素无法处理事件,它将自动转到父元素,直到找到一个可以处理事件的元素。如果没有元素可以处理事件,那么它将不会被处理。我建议你在w3c网站上阅读更多相关信息。

http://www.w3schools.com/