Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQUERY函数中传递值的问题_Javascript_Jquery - Fatal编程技术网

Javascript 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

在一些帮助下,我用JQUERY编写了以下内容:

   $('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);