1

私はこの例を持っています」

<div class="tmpl">
    <a href="javascript:button()" class="qwe">Button</a>
</div>

function button(){
    $(this).attr('class');
}

attrや他のものにアクセスできないように見えます。$(this)またはthis、jQuery スコープに含まれていないようです。

メソッドを使用せずにこれを機能させるon("click", function...)方法はありますか?

編集: HTML スニペットが動的に追加されたため、live問題が発生する可能性があります??

4

4 に答える 4

1

使わない理由

<div class="tmpl">
    <a href="#" onclick="button(event)" class="qwe">Button</a>
</div>

function button(event){
    event = event || window.event;
    alert($(event.target).attr('class'));
}

デモ:フィドル

于 2013-03-14T08:16:06.793 に答える
1

あなたの問題は、クリックされた要素ではなく、thisinsideがbuttonを参照することです。window

属性内のスクリプトはhref、通常の関数と同様にグローバル スコープで実行されます。そこからクリックした要素にアクセスすることはできません。

(何らかの理由で) 属性を介してイベント ハンドラーをバインドし、要素にアクセスする場合は、適切なインライン イベント ハンドラーを使用する必要があります。

<a href="#" onclick="button.call(this)" class="qwe">Button</a>

デモ

于 2013-03-14T08:23:17.840 に答える
1

次のパラメーターを渡します。

 <div class="tmpl"> 
   <a href='#' onclick="button(this)" class="qwe">Button</a>
   <a href='#' onclick="button(this)" class="qqq">Button2</a>
   <a href='#' onclick="button(this)" class="666">Button3</a>
</div>       //^^^^^^^^^^^^^^^^^^^^^----use onclick event instead

それから:

function button(elem) {
   alert($(elem).attr('class'));
}

更新されたフィドルをチェックアウト

于 2013-03-14T08:20:03.040 に答える
0

qwe は属性ではなくクラス名です。試してみてください$(elem).attr('class')

他の人が指摘したように更新 して、onclickも変更する必要があります:
<a href="javascript:button(this)" class="qwe">Button</a>

于 2013-03-14T08:18:10.527 に答える