在函数Jquery中传递变量

时间:2015-02-26 13:02:26

标签: javascript jquery

我写了这段代码:

var idImg = 'something';
$('#'+idImg).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)();
            funcs[tc].call(this);
            data.toggleclicked = (tc + 1) % 2;
        });
        return this;
    };

addMarker()是一个需要获取变量idImg的函数。

如何在addMarker函数中传递全局变量idImg?

由于

EDITED

 $(document).ready(function(){
     $('img').hover(function() { 
       var idImg = $(this).attr('id');      
       $('#'+idImg).clickToggle(addMarker, destroyMarker);});
  });




 $.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;
 };

var addMarker = function(){ alert(idImg)}  <-- I WANT THIS

 var destroyMarker = function(){
        DO SOMETHING ELSE
 };

1 个答案:

答案 0 :(得分:2)

您可以使用匿名函数

$('#'+idImg).clickToggle(function(){
    addMarker(idImg)
}, destroyMarker);

演示:Fiddle

但在这种情况下,由于这是按钮的ID,this内的addMarker会引用该按钮,因此您也可以使用this.id来引用something

演示:Fiddle