-1

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

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

包装section也应该是可点击的,但不受我上面描述的任何事情的影响。

标记是这样的:

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

/* 编辑 */

好的,找到了这个。

function (a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,a‌​rguments):b}

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

4

1 回答 1

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 中,事件系统通过冒泡来工作。最深的对象会得到点击事件,然后如果它可以处理它,它会处理它。在处理事件时,它可以阻止它走得更远,并且事件不会进一步传播。如果它决定不阻止该事件,它将转到父元素,依此类推,直到到达 HTML 元素。

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

http://www.w3schools.com/

于 2013-06-23T10:19:46.563 回答