1

これはコードです:

jQuery(document).ready(function(){
    jQuery('.post_box').on('click', function(e) { 
        jQuery(this).find(".read_more").trigger("click");
    });  
});

div post_box をクリックすると、クラス read_more を持つ post_box のサブ div にあるリンク (ポップアップ グレーボックス) がトリガーされます。動作しません。クリックするにはページを更新する必要があります。

代わりに on() 関数を配置すると、最初のクリックでリンクがトリガーされてブロックされます。サブ div のために複数のリンクがトリガーされると思います。これは HTML コードです。

<div class="post_box" >
    <div class="post_box_top">
        <div class="post_box_center">
            <div class="post_box_content">

                <div class="post_date">

                </div>
                <div class="post_content">

              <?php   echo   $content_post = get_post(get_the_ID());?>

                </div>
                <div class="post_footer">
                    <a href="<?php the_permalink();?>" title="<?php the_title(); ?>" class="read_more"  rel="gb_pageset[search_sites]"  data-greybox-type="iframe">Read more</a>
               // this the link i should trigger when someone click on the <div class="post_box">   
               </div>
            </div>
        </div>
    </div>
</div>`

http://ec2-107-22-235-75.compute-1.amazonaws.com/こちらをご覧ください。div をクリックしたときに on() に変更した場合に備えて、関数 one() を持つサイトです。 block http://haiders.imcserver.ro/teluguここで on() を使用した 2 番目のケースを見ることができます。

4

2 に答える 2

2

クリック イベントをトリガーする代わりに、偶数ハンドラー (関数) を作成し、関数を実行するだけです。

$(document).ready(function(){
    var     
    readMoreHandler = function (ev) {
        el = $(this).find(".read_more")
        // open read more for the above element
    };


    $('.post_box').on('click', readMoreHandler);  
});

このようにして、イベントのバブリングの問題はありません

于 2013-01-08T11:07:47.907 に答える
0

リンクでの伝播を停止してみてください。

$(".read_more").click(function(e){
    e.stopPropagation();
});

$(document).ready(function(){
    $('.post_box').on('click', function(e) { 
        $(this).find(".read_more").click();
    }); 
});

そうすれば、イベントがリンクからバブルしたときに、外側の div のイベント ハンドラーがトリガーされません。

ここにデモンストレーションがあります: http://jsfiddle.net/7wFQz/

于 2013-01-10T12:18:29.157 に答える