Javascript弹出窗口不适用于下一页分页

时间:2017-01-18 06:40:30

标签: javascript php jquery pagination

我使用PHP和Javascript构建了一个像数据视图这样的项目。在我的页面上,它通过使用分页有一个用户表。每行都有删除按钮。当我在第一页上单击该按钮时,它正常工作。当我在下一页的每一行点击删除按钮时,看起来弹出停止工作了。下面是我的代码:

用于运行弹出窗口的Javascript:



$(".mb-control").on("click",function(){
        var box = $($(this).data("box"));
        if(box.length > 0){
            box.toggleClass("open");

            var sound = box.data("sound");

            if(sound === 'alert')
                playAudio('alert');

            if(sound === 'fail')
                playAudio('fail');

        }        
        return false;
    });
    $(".mb-control-close").on("click",function(){
       $(this).parents(".message-box").removeClass("open");
       return false;
    });    




PHP脚本中的HTML用于删除按钮(在函数中 - $ i是每行唯一id的变量)



<?php

echo "<td>
	
	<button class='btn btn-warning mb-control btn-sm' href='./function/liststaff.remove.php?remove=".$getdata['username']."' data-box='#message-box-warning".$i."'>Remove <i class='glyphicon glyphicon-remove-circle'></i></button></a>
																
	<div class='message-box message-box-warning animated fadeIn' id='message-box-warning".$i."'>
	<div class='mb-container'>
	<div class='mb-middle'>
	<div class='mb-title'><span class='fa fa-warning'></span> Warning</div>
	<div class='mb-content'>
	<p>Are you sure want to delete user  <strong>".$getdata['username']." </strong>?.</p>                  
	</div>
	<div class='mb-footer'>
	<div class='pull-right'>
	<a href='index.php?delete=".$getdata['id']."' class='btn btn-success btn-lg'>Yes</a>
	<button class='btn btn-default btn-lg mb-control-close'>No</button>
	</div>
	</div>
	</div>
	</div>
	</div>
																
	</td>";

?>
&#13;
&#13;
&#13;

请帮忙。

3 个答案:

答案 0 :(得分:3)

尝试在动态创建的元素上绑定click事件,如下所示,第二页BUTTONS上的类名称 mb-control 不存在,因此该事件仅附加到现有元素。

希望它会帮助你。

 $("body").on("click",".mb-control-close",function(){
       $(this).parents(".message-box").removeClass("open");
       return false;
    });

$("body").on("click",".mb-control",function(){
        var box = $($(this).data("box"));
        if(box.length > 0){
            box.toggleClass("open");

            var sound = box.data("sound");

            if(sound === 'alert')
                playAudio('alert');

            if(sound === 'fail')
                playAudio('fail');

        }        
        return false;
    });

答案 1 :(得分:2)

我认为包含按钮的分页行无法绑定到click事件,因为它们是以动态方式创建的:

试试这个:

$(document).on('click','.mb-control-close', function (event) {
        $(this).parents(".message-box").removeClass("open");
           return false;
    });

jsfiddle

答案 2 :(得分:1)

对于动态内容的事件绑定,不应使用直接事件,而是使用委托事件。看看here