【发布时间】:2016-08-03 16:17:25
【问题描述】:
Jquery 函数正在执行两次(或者如果我前进然后后退的次数)。 LoginMenu.jsp 的 onLoad ,WorkOrder.jsp 加载到 whatever id 中。
当 WorkOrder.jsp 加载它时,然后在 WorkOrders.jsp 中定义的计划选项卡中加载 schedule.jsp
当 Schedule.jsp 加载时,它会在调度页面中获取记录并打印,该页面由两个引导下拉按钮和一个链接组成,通过该链接将您带到另一个页面。单击 schedule.jsp 中的链接会清空 whatever div 并加载 SubcaseMain.jsp。
Subcasemain.jsp 在单击时包含后退按钮,它会清空任何 div 并加载 WorkOrder.jsp.so 当我单击 schedule.jsp 中的链接时,它会转到 WorkOrder.jsp 中的 click(.delete) 函数两次并加载该函数存在的模态X次数。我检查了它被清空的div。那么为什么该函数执行了很多次?
标签在调用空方法后清除,但它仍在内存中,我检查了它正在制作多个javascript源的firebug脚本选项卡。为什么即使调用空方法后js也没有清除??
LoginMenu.jsp
<link href="css_harish/demo.css" rel="stylesheet" />
<link href="css_harish/jquery.mmenu.all.css" rel="stylesheet" />
<link href="css_harish/bootstrap-datetimepicker.min.css" rel="stylesheet" />
<link href="css_harish/bootstrap-paper.min.css" rel="stylesheet" />
<script src="js_harish/jquery-2.2.4.min.js"></script>
<script src="js_harish/jquery.mmenu.all.min.js"></script>
<script src="js_harish/bootstrap.min.js"></script>
<script src="js_harish/modernizr.js"></script>
<script src="js_harish/bootbox.min.js"></script>
<script src="js_harish/validator.js"></script>
<script src="js_harish/moment.min.js"></script>
<script src="js_harish/bootstrap-datetimepicker.min.js"></script>
<link href="css_harish/Loader.css" rel="stylesheet" />
<div class="content" id="whatever"></div>
$(document).ready(function () {
$(function () {
$("#whatever").empty();
$("#whatever").load("WorkOrders.jsp");
});
});
WorkOrders.jsp
$(document).ready(function() {
$("#schedule .showbox").show();
$("#schedule").load("Schedule.jsp");
});
$(document).on("click", ".delete", function(e) {
//delete the appointment
e.preventDefault();
alert("delete");
$("#edit_objid").val($(this).data('id'));
var objid = $("#edit_objid").val();
bootbox.confirm({
title: 'Delete Appointment',
message: 'Are you sure you want to delete this Appointment. ?',
buttons: {
'cancel': {
label: 'Cancel',
className: 'btn-default pull-left'
},
'confirm': {
label: 'Delete',
className: 'btn-danger pull-right'
}
},
callback: function(result) {
if (result) {
url="deleteAppointment.action?objid="+objid;
$.ajax({
type: 'POST',
cache: false,
async: true,
url: url,
dataType: 'json',
success: function(data) {
if(typeof data['EXCEPTION']!="undefined"){
bootbox.alert("Exception Occurs while deleting the appointment :"+data.EXCEPTION);
}else{
bootbox.alert("Deleted Successfully.");
$("#containerid").html('');
$("#containerid").html($(".showbox").html());
getSchedule();
}
}
});
}
}
});
});
Schedule.jsp
$(document).on("click", ".opensubcase", function() {
var id_number=$(this).text();
$("#whatever").empty();
$("#whatever").load("SubCaseMain.jsp?id_number="+id_number);
});
SubcaseMain.jsp
<span style="float:left" data-toggle="tooltip" data-placement="right" title="Go Back"><img
style="float: left" class="back" src="back.png" width="35px"
height="35px" /></span>
$(document).on("click", ".back", function() {
$("#whatever").empty();
$("#whatever").load("WorkOrders.jsp");
});
【问题讨论】:
-
@evolutionxbox 我已做出更改,请立即查看
-
您在类上使用委托绑定...因此,如果具有
back类的元素嵌套在具有delete类的元素中,您会看到事情发生了两次。也许您可以尝试添加停止立即传播? -
不要使用
alert,使用console.log并检查浏览器控制台(按F12)。 -
@Mottie 怎么会?
-
$(document).ready(function () { $(function () {将准备好的文档包装在准备好的文档中,这没有任何意义
标签: javascript jquery html twitter-bootstrap bootstrap-modal