0

このjQueryを使用して、クリックイベントを<a>タグにバインドしています

jQuery(document).ready(function() {

    jQuery(".post-like a").click(function(){

        heart = jQuery(this);

        // Retrieve post ID from data attribute
        post_id = heart.data("post_id");

        // Ajax call
        jQuery.ajax({
            type: "post",
            url: ajax_var.url,
            data: "action=post-like&nonce="+ajax_var.nonce+"&post_like=&post_id="+post_id,
            success: function(count){
                // If vote successful
                if(count != "already")
                {
                    heart.addClass("voted");
                    heart.siblings(".count").text(count);
                }
            }
        });

        return false;
    })
})

レンダリングされた HTML は次のようになります

<p class="button button_purple ico-like post-like"><a href="#" data-post_id="208" class="likelink"><span class="icon">
<span title="I like this article" class="qtip like"></span></span></a><span class="count">Vote</span></p>

<span class="count">Vote</span>a タグと重なっており、HTML をこのように保持する必要があります。タグまたはスパンがクリックされたときに、上記のjQueryを起動するにはどうすればよいですか?

これは HTML を生成する php です。

$output = '<p class="button button_purple ico-like post-like">';
if(hasAlreadyVoted($post_id))
$output .= '<span class="icon"><span title="'.__('I like this article', $themename).'" class="like alreadyvoted"></span></span><span class="count">'.$vote_count.'</span>';
else
$output .= '<a href="#" data-post_id="'.$post_id.'" class="likelink"><span  class="icon">
<span  title="'.__('I like this article', $themename).'" class="qtip like"></span></span></a><span class="count">'."Vote".'</span></p>';
return $output;

ありがとう

4

4 に答える 4

1
$('.post-like a, .count').click(function(ev){
    var heart;
    if($(ev).is('a')){
        heart = $(this);
    } else {
        heart = $(this).siblings('a');
    }
});

http://jsfiddle.net/3LF2y/

于 2012-07-03T16:31:04.533 に答える
0

スパンの .count クラスがあるので、それを使用してクリック イベントをバインドできます。

$(".post-like a,.count").click(function(){  
于 2012-07-03T16:31:43.950 に答える
0

スパンがクリックされた場合、a-click を手動でトリガーできます。

jQuery(".post-like .count").click(function(){
    jQuery(this).prev('a').trigger('click');
});
于 2012-07-03T16:30:23.973 に答える
0

ふたつのやり方:

要素のspan.count中に入れる<a>

また

<p>要素にクリックを割り当てます

于 2012-07-03T16:30:49.177 に答える