-1

DOM を調べて最初の<a href>ものではないものを見つける JavaScript プログラムを作成しようとしています。これは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>

/* 編集 */

OK、これを見つけました。

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 要素に到達するまで続きます。

要素がイベントを処理できない場合、イベントを処理できる要素が 1 つ見つかるまで、自動的に親に移動します。イベントを処理できる要素がない場合、イベントは処理されません。詳細については、w3c の Web サイトを参照してください。

http://www.w3schools.com/

于 2013-06-23T10:19:46.563 に答える