0

これは機能します。

$(document).ready(function(){
        $(".items article").click(function(){
            window.location=$(this).find("a").attr("href"); 
            return false;
         });
    });

ただし、ユーザーが同じページで ajax を介して他のレコードに移動すると、刺激的な更新が行われました。(ところで、それがどのように発生するかについての私の無知ほど刺激的ではありません)。

デリゲートを使用するようにコードを変更した場合:

$(document).ready(function(){
        $(".items article").delegate('click', function(){
            window.location=$(this).find("a").attr("href"); 
            return false;
         });
    });

私はまだ刺激的なリフレッシュを得ました。

ライブに変更したら、リフレッシュなしで取得できました。

$(document).ready(function(){
        $(".items article").live('click', function(){
            window.location=$(this).find("a").attr("href"); 
            return false;
         });
    });

ライブの代わりにデリゲートを使用する必要があることをstackoverflowで読みましたが、この場合、デリゲートは機能しないのに対し、ライブは機能するようです。または、間違って使用していますか?

更新: したがって、onを使用して、上記と同じ例を使用します。

$(document).ready(function(){ 
 $('#morespecifcelement').on('click','.items article', function() { 
  window.location=$(this).find("a").attr("href"); return false; 
 });
});

私はまだページを更新しました。

ご意見をお聞かせください、

4

3 に答える 3

3

短い答え

.live()常に(jQuery 1.7以降)に置き換えることができます(そしてそうすべきです)。.delegate().on()

行う代わりに:

jQuery(selector).live(event_type, handler);

あなたはいつでもすることができます:

jQuery(document).delegate(selector, event_type, handler);

なぜ(または)に置き換える.live()のか.delegate().on()

.live()は非効率的であるため、使用は避けてください。文書化されていselectorないdocument引数(私の知る限り、jQueryの新しいバージョンでは無効になっています)。

ノート

これは、上記の内容を正確に実行する必要があるという意味ではありません。代わりに、ドキュメントではなく、より小さな要素を選択する必要があります。

jQuery 1.7以降では、またはを使用する.on()代わりにを使用する必要があります。.delegate().live()

編集:同じ使用.on()

このコードは、前にリストした例とまったく同じように機能します(より効率的で最新の方法を除く)。

jQuery(document).on(event_type, selector, handler);

ただし、イベントハンドラーをにアタッチすることdocumentはお勧めできません。イベントハンドラーで発生するすべてのイベントがサイトのパフォーマンスに影響を与えるためです。

より具体的な解決策

あなたの場合に機能するはずの正確なコードはこれです:

$(document).ready(function(){ 
    $(document).on('click','.items article', function(event) {
        window.location=$(this).find("a").attr("href");
        return false;
    });
});

あなたの場合にそれが機能しない理由はおそらくこれらの1つです:

  1. 1.7より古いjQueryを使用している(.on()利用できない場合)。
  2. セレクターによって一致する要素#morespecifcelementは、ドキュメントの準備ができているときには存在しません(おそらく後で紹介されます)。
于 2012-07-03T17:46:22.683 に答える
1

試す

$(document).delegate(".items article","click",function(){

}
于 2012-07-03T17:29:53.747 に答える
0

jQuery 1.7+ を使用している場合は、次のことを行う必要があります。

$(document).ready(function(){
    $(document).on('click', '.items article', function(){
        window.location=$('a', this).attr("href"); 
        return false;
     });
});

最善の解決策は、リンクから href 属性を取得し、そのアドレスにリダイレクトするために javascript を使用することを保証するために、以前に間違っていたものを修正することでしょう<a>

于 2012-07-03T17:37:45.683 に答える