Javascript JQUERY函数中传递值的问题
在一些帮助下,我用JQUERY编写了以下内容:Javascript JQUERY函数中传递值的问题,javascript,jquery,Javascript,Jquery,在一些帮助下,我用JQUERY编写了以下内容: $('id').clickToggle(addMarker, destroyMarker); 其中clickToggle是一个调用addMarker和destroyMarker函数的函数 这是clickToggle()函数: $.fn.clickToggle = function(func1, func2) { var funcs = [func1, func2]; this.data('togglecl
$('id').clickToggle(addMarker, destroyMarker);
其中clickToggle是一个调用addMarker和destroyMarker函数的函数
这是clickToggle()函数:
$.fn.clickToggle = function(func1, func2) {
var funcs = [func1, func2];
this.data('toggleclicked', 0);
this.click(function() {
var data = $(this).data();
var tc = data.toggleclicked;
$.proxy(funcs[tc], this)();
data.toggleclicked = (tc + 1) % 2;
});
return this;
};
addMarker()函数是
var addMarker=function(){….}
我在JQUERY中没有那么多xp。我要做的是在addMarker()函数中传递一个变量。我的代码是如何编写的?这里的演示非常方便: HTML
如果您使用的是全局变量,可以这样做:
var x = 5;
$.fn.clickToggle = function(func1, func2) {
var funcs = [func1, func2];
this.data('toggleclicked', 0);
this.click(function() {
var data = $(this).data();
var tc = data.toggleclicked;
funcs[tc].call(this, x);
data.toggleclicked = (tc + 1) % 2;
});
return this;
};
$('id').clickToggle(addMarker, destroyMarker);
OT:
$.proxy(funcs[tc],this)(
->funcs[tc]。调用(this)
要传递给addMarker
的变量?谢谢您的回答!该变量在clickToggle()函数外部定义。如下所示:var id=x$(“#”+id)。单击切换(添加标记、销毁标记);谢谢你的回答。但是如何将x变量传递到addMarker函数()?@dkar这里:funcs[tc].call(this,x)代码>。call
允许您传递参数,这是x
在这个
变量之后所做的。不建议在不必要的时候使用全局变量。@kasperTaeymans是真的,但有时您无法更改代码,只需勉强应付。@dkar阅读这个调用()
这里的函数:我在代码示例中有一个输入错误。它现在已经修好了:-)谢谢,但似乎不起作用。没有警报!它应该可以工作,它可以在我的电脑上工作(使用firefox),所以它也可以在你的电脑上工作。是的。奇怪。我有一个图像id,而不是div id。它应该有相同的结果。图像id是什么意思?除了注释外,我发布的代码与JSFIDLE中的代码相同。
$.fn.clickToggle = function(func1, func2) {
var funcs = [func1, func2];
this.data('toggleclicked', 0);
this.click(function() {
var data = $(this).data();
var tc = data.toggleclicked;
$.proxy(funcs[tc], this)();
data.toggleclicked = (tc + 1) % 2;
});
return this;
};
//lets pass the strings "world" and "foo" to addMarker and destroyMarker
$('#myid').clickToggle(function(){addMarker("world")}, function(){destroyMarker("foo")});
//pass a variable as a parameter to the functions
var addMarker = function(x){ alert("addmarker "+x)}
var destroyMarker= function(x){alert("removemarker "+x)}
var x = 5;
$.fn.clickToggle = function(func1, func2) {
var funcs = [func1, func2];
this.data('toggleclicked', 0);
this.click(function() {
var data = $(this).data();
var tc = data.toggleclicked;
funcs[tc].call(this, x);
data.toggleclicked = (tc + 1) % 2;
});
return this;
};
$('id').clickToggle(addMarker, destroyMarker);