3

<a>頭がおかしいのかもしれませんが、クリックされているリンクのIDを取得できません。for securityはvar正常に機能し、ID属性には明確にコンテンツが含まれています。私は何かが足りないのですか?

これがPHPです-

<span id="<?php echo $load_post_content_nonce; ?>">
    <a href="<?php the_permalink(); ?>" id="<?php the_ID(); ?>" class="read-more" target="_blank">Read more...</a>
</span>

これがJSです-

$(document).ready(function(){   

    $('a.read-more').live('click', function(e){

        e.preventDefault();

        var id = $(this).attr('id');
        var security = $(this).parent('span').attr('id');

    });

});

リンクの1つからのHTML出力は次のとおりです-

<span id="b494a85e81">
    <a id="6623" class="read-more" href="http://test.dynedrewett.com/warring-parents-told-to-face-up-not-fall-out-over-contact-with-children/">Read more...</a>
</span>
4

4 に答える 4

4

他の人が指摘している.live()ように、jQuery 1.7 の時点で非推奨です。古いバージョンでも、.delegate()委任されたイベントを処理するための推奨される方法になりました。それ以降のバージョンでは、に移植する方法を説明するjQuery ドキュメントでon()説明されているように、委任されたイベントを処理するための正しい方法です。.live().on()

これ、DOM が AJAX またはその他の方法で準備できた後に動的に生成されたコンテンツに対しては機能しますが、正しい構文を使用する必要があります。動的に生成された.read-moreリンクのクリックを処理するには、次の手順を実行します。

$(document).ready(function(){

    $(document).on('click', 'a.read-more', function(e) {
        e.preventDefault();

        var id = this.id;
        var security = $(this).parent('span').attr('id');
    });
});

では、将来のリンクのクリックを処理するために、任意の静的親要素 (ハンドラーがバインドされた時点で存在し、「永久に」存在することが保証されている要素)$(document).on('click', 'a.read-more', function(e) {...})に置き換えることができます。ドキュメントでは、使用方法について詳しく説明しています。document.read-more

これを書いている時点では、jQuery オブジェクトにはという名前のプロパティはありませid。要素の ID にアクセスするには、次のいずれかを行う必要があります:
-.attr( 'id' )
または
- ネイティブ DOM 要素のidプロパティを使用:$(element)[0].idまたはelement.id

于 2012-09-04T11:11:50.113 に答える
3

このコードを使用してください

  $(document).ready(function(){ 
     $('a.read-more').live('click', function(e)
      {
          e.preventDefault();
          var id = this.id;
          var security = $(this).parent('span').id;
       }); 
    });

this.id で id を見つけることができます。

于 2012-09-04T10:19:29.707 に答える
2

Php は間違ったコードを生成しています。このスクリプトは動作するはずです。

また、次の理由から、「ライブ」から「オン」に変換してみてください。

.on() メソッドは、jQuery オブジェクトで現在選択されている要素のセットにイベント ハンドラーをアタッチします。jQuery 1.7 以降、.on() メソッドは、イベント ハンドラーをアタッチするために必要なすべての機能を提供します。古い jQuery イベント メソッドからの変換については、.bind()、.delegate()、および .live() を参照してください。.on() でバインドされたイベントを削除するには、.off() を参照してください。1 回だけ実行されてから削除されるイベントをアタッチするには、.one() を参照してください。

http://api.jquery.com/on/

于 2012-09-04T10:07:06.013 に答える
1

あなたのコードは正常に動作します。

あなたIDもそれを行うことができます:

$(document).ready(function(){   

    $('a.read-more').on('click', function(e){

        e.preventDefault();

        var id = this.id;
        var security = this.parent('span').id;

    });

});

使用せずに.attr()

エラーは確かにあなたのPHPコードにあります。

于 2012-09-04T10:05:31.787 に答える