54

そこに大きなdivがあり、小さなdiv、achorタグ、その他の要素があります。私のプログラムの各大きなdivは、「mousedown」イベントにバインドされており、onMouseDownハンドラー内で、基本的にevent.targetをチェックします。

ユーザーがハイパーリンクであるアイテムをクリックした場合、event.targetがハイパーリンクであるかどうかを確認してから、event.targetがハイパーリンクである場合はそのリンクに移動します。どうすればそれができますか?

divsaと要素の構造は次のとおりです。

<div class="camp-name">
    <span class="btnCampaign"><div class=""></div></span>
    <span class="campaign-name">
       <a href="http://www.google.com">Some Link here</a>
    </span>
</div>
<div class="campaign-name-sub">
   <span class="campaign-accountname">Some Text here</span>
   <span class="seprator">|</span>
   <span class="brandname">Some Text here</span>
</div>

JS

var label = label.createElement("DIV");
label.innerHMTL = src //src is the above html that is seen here
    Plugin.addEventListener(label, "mousedown", params.onMouseDown);


Plugin.onMouseDown() = function(event) {
var target = (event.currentTarget) ? event.currentTarget : event.srcElement;
        if (target.tagName.toLowerCase() === "a" && target !== undefined) {
            console.log(target.href);
            Plugin.stopPropagation(event);
        }
};
4

3 に答える 3

113

あなたはそれを通り抜けるべきです

if(event.target.tagName.toLowerCase() === 'a')
{
    event.target.href; //this is the url where the anchor tag points to.
}
于 2013-03-27T14:34:19.017 に答える
10

tagName@ parthik-gosarが言ったように、プロパティを確認できます。もう1つの方法は、instanceof演算子を使用して要素クラスをチェックすることです(ハイパーリンクはタイプですHTMLAnchorElement)。

if (event.target instanceof HTMLAnchorElement) {
  console.log(event.target.href);
}
于 2019-05-31T09:42:49.813 に答える
0

コードを変更してみましたが、コードに複数の問題があり、修正しました。

これはJavaScriptの部分です

var src = '<div class="camp-name"><span class="btnCampaign"><div class=""></div></span><span class="campaign-name"><a href="http://www.google.com">Some Link here</a></span></div>';

var label = document.createElement('DIV')
label.innerHTML = src;
var topdiv = document.getElementById("test");
console.log(label)
topdiv.appendChild(label);

label.addEventListener('click', test, false);

function test(event) {
    if(event.target.tagName.toLowerCase() === 'a') {
        var href = event.target.href;
        console.log(href);
    }
    window.location = href;
};

これはそのHTML部分です

<div id="test">
 test
</div>

私はこれをjsfiddlehttp : //jsfiddle.net/KDejm/1/で行いました

ベントが正しくキャプチャされているかどうかを教えてください。

于 2013-03-27T15:27:11.417 に答える