0

アンカータグがありました

<li><a href="#" class="institution">Click me</a></li>
<li><a href="#" class="department">Click me</a></li>
<li><a href="#" class="branch">Click me</a></li>

アンカータグをクリックしてコードを実行したかったので、使用しました

$('a').click(function(){
    //do something..
});

しかし、うまくいきませんでした。だから私は使った

$('a').on('click',function(){
    //do something..
});

私も使った

$('a').bind('click',function(){
    //do something..
});

しかし、それらも機能しませんでした。私のために働いたのは

$('a').live('click',function(){
    //do something..
});

なぜこれがそうなのか..それらのすべてが同じ動作を示すことになっているのに。

4

2 に答える 2

7

.clickイベント委任はあり.bindません。要素がDOMにロードされる前にそれらを実行しています。to をアンカーの下に移動するか.click、DOM Ready イベント内に追加します。

$(document).ready(function() {
    $('a').click(function(){
        //do something..
    });
});

また

$(function() {
    $('a').click(function(){
        //do something..
    });
});

上記の両方の結果は同じです。より読みやすく、保守しやすい方を使用してください。

.liveイベント委任を使用しているため、現在は機能しています。これは、素人の見解によると、

$(document).on('click', 'a', function(){
    //do something..
});

.liveは jQuery 1.7 以降では非推奨になっているため、イベント委任のメソッドを優先する必要があります.on。また、子孫パラメーター.onを渡す親要素にバインドされている場合にのみ、イベント委任効果があることに注意してください。selector

ここにフィドルがあり$(document).ready()ます。

編集: OPのコメントによると、アンカータグを動的に追加しているため、イベントの委任(推奨)または新しいコンテンツを追加するたびにイベントを再バインドするという2つのオプションがあります。

jQuery 1.7+ では、.on()イベント委任に使用す​​る必要があります。

$('#AnchorsDivID').on('click', 'a', function(){
    //do something..
});

.onイベント委任と Ajaxを使用したフル機能のライブ デモは次のとおりです:
JSFiddle

jQuery <=1.6.4 では、.delegate()またはを使用する必要があります.live()。バージョンごとに使いやすさとパフォーマンスが向上するバージョンは、.live()jQuery API ページに示されています。

jQuery >=1.4.3 <1.7 の場合:

$('#AnchorsDivID').delegate('a', 'click', function(){
    //do something..
});
于 2012-07-08T21:34:16.660 に答える
0

このコードはあなたのhtmlで完全にうまく機能します:

$(document).ready(function(){
    $('a').on('click', function(e){
        console.log('some action.');
    });
});

PSこのコードはすべてのリンクで実行されます!

于 2012-07-08T21:35:32.123 に答える