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。单击 a 标签或 span 时,如何让上面的 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

如果单击跨度,您可以手动触发 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 回答
0

由于您有一个跨度的 .count 类,您可以使用它来绑定单击事件。

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