是否有调用函数的时候,例如按一个模态窗口上的关闭按钮,根据打开模态窗口的功能,它会采取不同的动作?
所以说例如我们有一个登录页面,其中包含要点击的项目,在模态窗口中显示该项目的图像,并且当从该上下文打开图像时调用了某个函数,并且我们有一个搜索侧导航显示项目的栏,当点击这些项目时,打开模态窗口的功能与第一个不同。现在关闭模态窗口时,根据调用打开模态的函数,我想写一个条件,允许我返回登录页面或返回侧导航栏。
我没有任何代码可以显示,但我想知道这样的事情是否可行;根据以前调用的函数编写条件?那条件的命令是什么?
所以
function 1 () {
doSomething;
}
function 2 () {
doAnotherThing;
}
$("closeButton").on('click', function () {
if (function 1 was called) {
// do something else
} else if (function2 was called) {
// do another thing
}
}
这样的事情可能吗?
答案 0 :(得分:2)
在MVC框架中,您可以将属性绑定到相关视图。如果没有,您始终可以将绑定状态保持为窗口对象。
如果您也不想这样做,您可以将DOM中的状态(关闭按钮)保留为属性。例如,数据属性。
$("closeButton").on('click', function (e) {
var state = $(e.currentTarget).data("state");
}
答案 1 :(得分:2)
var fnClicked = null
function fn1() {
fnClicked = fn1;
doSomething();
}
function fn2() {
fnClicked = fn2;
doAnotherThing();
}
$('closeButton').on('click', function(){
if (fnClicked === fn1) {
//do something else
} else if (fnClicked === fn2) {
//do another thing
}
});
或者,您可以让fn1和fn2取消绑定closebutton
click
事件并将其重新绑定到相应的后续行程。
答案 2 :(得分:1)
您可以在模态元素上使用data attributes
来存储指示打开模态的区域的信息。然后在关闭模态时,查看该属性并根据打开模态时存储的值确定要执行的操作。
答案 3 :(得分:1)
变量可以在Javascript中存储对函数的引用。所以我会让function1设置一些内部变量,当你关闭模态时会检查它:
var calledBy;
function1 () {
calledBy = function1;
//open modal
}
function2 () {
calledBy = function2;
//open modal
}
$("closeButton").on("click", function () {
if(calledBy === function1) {
//...
} else if(calledBy === function2) {
//...
}
});
但正如hyperstack所指出的那样,它有一个更好的组织来打开模态并传入一个参数。我会有一个模态的对象:
var modal = {
//...
calledBy: null,
open: functio (calledBy) {
this.calledBy = calledBy;
}
};
答案 4 :(得分:0)
您可以使用' this'特殊关键字,用于引用调用方法的对象。
EG。
<div class="cval">
test
</div>
<script>
$(".cval").click(function (e) {
e.preventDefault();
alert($(this).attr('class'));
if($(this).attr('class') == 'cval')
//dosomething
else
//dosomething
});
</script>
询问任何元素属性的值,然后使用条件来控制流。