从.click()javascript函数返回一个变量

时间:2013-08-01 17:46:31

标签: javascript

首先,我的弱英语借口,我尝试使用以下javascript代码,我想返回id变量并在其他函数中使用它,但它似乎无法正常工作并且不返回它,有人可以帮助我出去写这个

var idcb = $('.box').click(function() {
    var id = $(this).attr('id');
    return id;
});

我想在此函数中使用var idcb:

$(".hs").click(function() {    
    $(idhs).slideToggle("slow");
        return false;
    });
});

8 个答案:

答案 0 :(得分:2)

为了使其工作,jquery click实现需要知道你传递的函数返回一个值,并且它本身应该返回该值 - 这不是这种情况。

相反,你可以使用一些封闭魔术来轻松完成。试试这个:

var idcb;
$('.box').click(function() {
    idcb = $(this).attr('id');
});

答案 1 :(得分:1)

您正在将匿名函数传递给事件处理程序,您无法从此类函数返回值。解决方案是使用闭包来解决这个问题:

var idcb = null;
$('.box').click(function() {
    idcb = $(this).attr('id');
});

变量idcb将始终设置为单击的最后一个.box的id。

答案 2 :(得分:0)

该函数作为click函数的参数给出,并在用户单击元素时异步运行。因此,您无法直接返回值,因为该函数不会立即运行。你可以用另一种方式查找id值,或者将它传递给一个函数来处理而不是返回它,或者只是这样做:

var idcb = $('.box').click(function() {

   var id = $(this).attr('id');

   $(id).slideToggle("slow");
});

答案 3 :(得分:0)

你无法按照自己的方式去做。但是,您可以使用两个函数都可以访问的变量来共享它们之间的值。

var icdb = 'test';

function a() {
    icdb = 'another value';
}

function b() {
    console.log(icdb);
}

a();
b();

您也可以从b调用a并将变量作为参数传递:

function a() {
    b('test');
}

function b(icdb) {
    console.log(icdb);
}

a();

答案 4 :(得分:0)

您的变量idcb包含点击处理程序!

你需要在处理程序之外声明vriable并在其中分配它以使其工作:

 var idcb = null;

 // ... whatever
 $('.box').click(function() {
     idcb = $(this).attr('id');

     return true; // return 'true' from an event handler to indicate successful completion
 });

答案 5 :(得分:0)

Check this out

var id=null;
$('.box').click(function() {
    id = $(this).attr("id");
});

$(".hs").click(function() {
    $("#"+id).slideToggle("slow");
    return false;
});

答案 6 :(得分:0)

您可以传入一个对象作为click函数的引用 并从回调中更改值。另一个选择是使用闭包 对这个jsfiddle的警告是你必须先调用.box元素。

http://jsfiddle.net/D6B73/2/

var idcb = {};
$('.box').click(idcb, function (event) {
        event.data.value = $(this).attr('id');
        console.log(idcb.value);
 });

$('.hs').click(function() {    
   $('#'+idbc.value).slideToggle("slow");  
});

答案 7 :(得分:-1)

你可以这样做:

$(".hs").on('click', function() {
   var id = $('.box').attr('id');
   alert(id);
});