1

我在php和中创建了一个类似的程序jQuery。这是我的jQuery代码:

$(document).ready(function(){
    $(".likethis").click(function(event){
            event.preventDefault();
            var id = $(this).attr("href");
            $.ajax({
                url: '<?php echo site_url().'users/likevideo/'; ?>'+id,
                success: function(data) {
                    var d =data.split('~');
                    if(d[0]==2){
                        alert('You must login to like-dislike a video!');
                    }else if(d[0]==3){
                        alert('You already liked this video');
                    }else if(d[0]==1){
                        $(".like_ico").html(d[1]);
                        $(".dilike_ico").html(d[2]);
                        $("#like_box").html('<a href="#" class="likeedthis"><img src="<?php echo base_url(); ?>images/like.jpg" /></a>');                       
                        $("#dislike_box").html('<a href="<?php echo $vid->id; ?>" class="dlikethis"><img src="<?php echo base_url();?>images/dis_lik_over.jpg" /></a>');


                    }

                }
            });


    });

    $(".dlikethis").click(function(event){
            event.preventDefault();
            var id = $(this).attr("href");
            $.ajax({
                url: '<?php echo site_url().'users/dlikevideo/'; ?>'+id,
                success: function(data) {
                    var d =data.split('~');
                    if(d[0]==2){
                        alert('You must login to like-dislike a video!');
                    }else if(d[0]==3){
                        alert('You already Disliked this video');
                    }else if(d[0]==1){
                        $(".dilike_ico").html(d[1]);
                        $(".like_ico").html(d[2]);                      
                        $("#dislike_box").html('<a href="#" class="dlikedthis"><img src="<?php echo base_url(); ?>images/dis_lik.jpg" /></a>');
                        $("#like_box").html('<a href="<?php echo $vid->id; ?>" class="likethis"><img src="<?php echo base_url();?>images/like_over.jpg" /></a>');
                    }
                }
            });
    });
});

这是我的html。

<div id="dislike_box">
                                    <?php
                                        $likeimage='';
                                        $dlikeimage='';
                                        if($this->basic->get_video_liked_or_not($vid->id)==1){
                                            $likeimage ='<a href="#" class="likeedthis"><img src="'.base_url().'images/like.jpg" /></a>';
                                        }else{
                                            $likeimage ='<a href="'.$vid->id.'" class="likethis"><img src="'.base_url().'images/like_over.jpg" /></a>';
                                        }
                                        if($this->basic->get_video_dliked_or_not($vid->id)==1){
                                            $dlikeimage='<a href="#" class="dlikedthis"><img src="'.base_url().'images/dis_lik.jpg" /></a>';
                                        }else{
                                            $dlikeimage='<a href="'.$vid->id.'" class="dlikethis"><img src="'.base_url().'images/dis_lik_over.jpg" /></a>';
                                        }
                                    ?>
                                    <?php echo $dlikeimage; ?>
                                    </div>
                                    <div id="like_box">
                                    <?php echo $likeimage; ?>
                                    </div>

问题是当我第一次单击“喜欢”按钮时,图像变为“喜欢”的图像,然后如果我单击“不喜欢”按钮,页面会刷新而不是不喜欢视频。刷新后,我再次单击了不喜欢。现在它正在工作。但同样的情况也发生在like 按钮上。谁能告诉我为什么会这样?

4

1 回答 1

2

在动态添加元素时使用这样的事件委托

$("#dislike_box").on('click',".dlikethis",function(event){..});
$("#like_box").on('click',".likethis",function(event){..});
于 2013-05-18T11:48:58.193 回答