在复选框更改事件中,其中一个javascript绑定切换操作。
稍后(在另一个脚本中)我想根据条件更改切换操作。
实施例。 脚本1:
$(document).ready(function () {
var shipFields = $('.address1 input');
$("input[name = 'same_as_bill']").on("change", function (evt) {
toggleFields(shipFields, !$(this).is(":checked"));
});
function toggleFields(fields, show) {
var inputFields = $("li", fields).not(".sameas, .triggerWrap");
inputFields.toggle(show);
}
}
脚本2:
$(document).ready(function () {
$('li.sameas input').click(function (sender) {
var target = $(sender.target);
var selectedCountryValue = $('li.country select', target.closest('fieldset')).val();
// determine data method based on country selected
if (selectedCountryValue === "xxx") {
ShowAddress(true, target);
} else {
ShowAddress(false, target);
}
});
function kleberShowAddress(show, target) {
if (show) {
$('li.address).hide();
} else {
$('li.address).show();
}
}
});
我在这里的问题是,我的网站首先加载脚本1然后加载脚本2.因此,当脚本2执行操作时,切换操作排队并在脚本2发生更改后触发,将恢复我想要的变化。
有没有办法删除队列中的操作?或停止发生第一次请求。我不想使用.unbind()来停止触发脚本1的功能。我只想在符合脚本2中的条件时停止操作。
请注意:上面的功能会被修剪以显示更少的代码。
答案 0 :(得分:1)
添加var isActive = true;
并使用它来检入第一个脚本。
在脚本2中,您可以在任何时候想要禁用第一个脚本的功能时调用isActive = false
,或者isActive = true
重新启用它们。
您的代码如下:
//script1
var isActive = true;
$(document).ready(function() {
var shipFields = $('.address1 input');
$("input[name = 'same_as_bill']").on("change", function(evt) {
if (isActive) {
toggleFields(shipFields, !$(this).is(":checked"));
}
});
function toggleFields(fields, show) {
if (isActive) {
var inputFields = $("li", fields).not(".sameas, .triggerWrap");
inputFields.toggle(show);
}
}
});
//script2
$(document).ready(function() {
isActive = false;
$('li.sameas input').click(function(sender) {
var target = $(sender.target);
var selectedCountryValue = $('li.country select', target.closest('fieldset')).val();
// determine data method based on country selected
if (selectedCountryValue === "xxx") {
ShowAddress(true, target);
} else {
ShowAddress(false, target);
}
});
function kleberShowAddress(show, target) {
if (show) {
$('li.address').hide();
} else {
$('li.address').show();
}
}
});