Ajax jQuery分页终止了我的切换开关

Ajax jQuery分页终止了我的切换开关,ajax,jquery,pagination,toggle,Ajax,Jquery,Pagination,Toggle,我的页面通过循环显示存储在数据库中的帖子。每个帖子都有一个“喜欢”和“不喜欢”按钮。该页面有两个主控件开关,用于显示/隐藏所有喜欢的帖子和显示/隐藏所有不喜欢的帖子 这一切都很完美。我现在正试图在保留上述功能不变的情况下对上述帖子进行分页。事实证明,这很困难。简言之,如果我单击一个类为“like”的div,var值设置为“1”,ajax将激发该值,并将该值存储在数据库中并返回一条成功消息。不喜欢也会发生同样的情况,不同之处在于var值设置为“0” 如果用户选择隐藏所有喜欢的帖子,他们确实会隐藏,

我的页面通过循环显示存储在数据库中的帖子。每个帖子都有一个“喜欢”和“不喜欢”按钮。该页面有两个主控件开关,用于显示/隐藏所有喜欢的帖子和显示/隐藏所有不喜欢的帖子

这一切都很完美。我现在正试图在保留上述功能不变的情况下对上述帖子进行分页。事实证明,这很困难。简言之,如果我单击一个类为“like”的div,var值设置为“1”,ajax将激发该值,并将该值存储在数据库中并返回一条成功消息。不喜欢也会发生同样的情况,不同之处在于var值设置为“0”

如果用户选择隐藏所有喜欢的帖子,他们确实会隐藏,但不会在他们的位置弹出其他帖子。我希望它的分页总是显示X结果每页,即使在一些帖子被切换。事实上,如果我隐藏了5个帖子中的3个,那么剩下的只有2个帖子,而不是接下来的3个帖子

imtech_pager.js查找名为“contained”的div,并在其中查找类为“z”的所有div。然后对这些div进行分页。这确实有效。只是它导致了上述问题

像Edislike.js(切换x个帖子数量不会导致拉入下一个x个帖子数量):

$(文档).ready(函数(){
likestatus=1;
厌恶度=1;
$(document).on(“click”,“.like”,function(){
postID=$(this.attr('id').replace('like_','');
//声明变量
值='1';
myajax();
返回false;
});
$(文档)。在(“单击”,“不喜欢”,函数()上){
postID=$(this.attr('id').replace('dishate_uu','');
//声明变量
值='0';
myajax();
返回false;
});
函数myajax(){
//将值发送到数据库
$.ajax({
url:'check.php',
//php接收发送给它的值并将它们存储在数据库中
键入:“POST”,
数据:“postID=”+postID+”&value=”+value,
成功:功能(结果){
$('#Message_u'+postID).html('').html(result).prependTo('#post_'+postID);
如果(result.indexOf(“No”)<0{//如果返回值不包含字符串“No”,则执行此操作
如果(value==1){//如果喜欢post,请执行此操作
$('#post"+postID).removeClass('loke').addClass('like');
$('#dislikebtn'+postID).removeClass('dislikeimgon').addClass('dislikeimgoff');
$('#likebtn'+postID).removeClass('likeimgoff').addClass('likeimgon');
//如果“隐藏喜欢的内容”复选框处于启用状态,则切换帖子
如果(likestatus%2==0){
$('#post"+posted).toggle();
}
}否则,如果(value==0){//如果不喜欢post,请执行此操作
$('#post'+postID).removeClass('like').addClass('loke');
$('#likebtn'+postID).removeClass('likeimgon').addClass('likeimgoff');
$('#dislikebtn'+postID).removeClass('dislikeimgoff').addClass('dislikeimgon');
//如果“隐藏不喜欢的内容”复选框处于启用状态,则切换帖子
如果(不喜欢状态%2==0){
$('#post"+posted).toggle();
}
}
}
}
});
}
//单击“隐藏喜欢的帖子”复选框时,切换所有喜欢的帖子。
$('show#likes')。在('click',function()上{
countlikes=$('[id^=post_u2;].like')。长度;
如果(countlikes>0){
likestatus++;
$('[id^=post_].like').toggle();
如果(likestatus%2==0){
$('hidelikedbtn').removeClass('hidelikedimgoff').addClass('hidelikedimgon');
}否则{
$('hidelikedbtn').removeClass('hidelikedimgon').addClass('hidelikedimgoff');
}
}
返回false;
});
//单击“隐藏不喜欢的帖子”复选框时,切换所有不喜欢的帖子。
$('show#u dislikes')。在('click',function()上{
countdislikes=$('[id^=post_].dislikes')。长度;
如果(countdislikes>0){
厌恶状态++;
$('[id^=post_uz].dislike').toggle();
如果(不喜欢状态%2==0){
$('hidedislikedbtn').removeClass('hidedislikedimgoff').addClass('hidedislikedimgon');
}否则{
$('hidedislikedbtn').removeClass('hidedislikedimgon').addClass('hidedislikedimgoff');
}
}
返回false;
});
});
imtech_pager.js(这将使用类“z”对所有div进行分页-工作正常)

var-Imtech={};
Imtech.Pager=函数(){
本段第页=3;
this.currentPage=1;
this.pagingControlsContainer='#pagingControls';
this.pagingContainerPath='#contained';
this.numPages=函数(){
var numPages=0;
if(this.paragraphs!=null&&this.paragraphspage!=null){
numPages=Math.ceil(this.parations.length/this.paragraphsPerPage);
}
返回数值;
};
this.showPage=函数(第页){
this.currentPage=第页;
var html='';
本.段落.切片((第1页)*本.段落,
((第1页)*此.段落页面)+此.段落页面)。每个(函数(){
html++=''+$(this.html()++'';
});
$(this.pagingContainerPath).html(html);
RenderControl(this.pagingControlsContainer、this.currentPage、this.numPages());
}
var renderControls=函数(容器、当前页面、numPages){
var pagingControls='Page:
    '; 对于(变量i=1;i


    我认为问题可能是元素被添加到DOM中或从DOM中删除,这会使它们丢失其处理程序

    由于您使用的是1.7,我认为语法应该是:

    $(document).on("click", ".dislike", function(){
    
    而不是

    $('.dislike').on('click', function() {
    
    这相当于
    live
    1.7之前的版本。您可以通过将
    文档
    替换为更具体的选择器(该选择器是所有o
    <div id="content">
    <div id="mastercontrols">
        <div id="show_likes" style="position:absolute;">
            <a id="hidelikedbtn" class="hidelikedimgoff" href="#"><span></span></a>
        </div>
        <div id="show_dislikes" style="position:absolute; right: 0em;">
            <a id="hidedislikedbtn" class="hidedislikedimgoff" href="#"><span></span></a>
        </div>
    </div>
    <div id="contained">
        <?php 
        $data = mysql_query("SELECT * FROM Posts") or die(mysql_error());
        while($row = mysql_fetch_array( $data )){ 
        ?>
        <div class="z">
            <div id="post_<?php echo $row['postID']; ?>" class="post">
                <div id="post_<?php echo $row['postID']; ?>_inside" class="inside">
                    <div id="like_<?php echo $row['postID']; ?>" class="like" style="position:absolute; right: 2.5em;">
                        <a id="likebtn_<?php echo $row['postID']; ?>" class="likeimgoff" href="#"><span></span></a>
                    </div>
                    <div id="dislike_<?php echo $row['postID']; ?>" class="dislike" style="position:absolute; right: 0em;">
                        <a id="dislikebtn_<?php echo $row['postID']; ?>" class="dislikeimgoff" href="#"><span></span></a>
                    </div>
                    <b><?php echo $row['Title']; ?></b><br>
                    <?php echo $row['Description']; ?><br>
                    <div id="postleft">
                    </div>
                    <div id="postright">
                    </div>
                </div>
            </div>
            <div id="Message_<?php echo $row['postID']; ?>" class="reminder"></div>
        </div>  
        <?php 
        } 
        ?>
    </div>
    <div id="pagingControls"></div>
    </div>
    
    <script type="text/javascript">
    var pager = new Imtech.Pager();
    $(document).ready(function() {
            pager.paragraphsPerPage = 5; // set amount elements per page
            pager.pagingContainer = $('#container'); // set of main container
            pager.paragraphs = $('div.z', pager.pagingContainer); // set of required containers
            pager.showPage(1);
    });
    </script>
    
    $(document).on("click", ".dislike", function(){
    
    $('.dislike').on('click', function() {