首先,我的弱英语借口,我尝试使用以下javascript代码,我想返回id变量并在其他函数中使用它,但它似乎无法正常工作并且不返回它,有人可以帮助我出去写这个
var idcb = $('.box').click(function() {
var id = $(this).attr('id');
return id;
});
我想在此函数中使用var idcb:
$(".hs").click(function() {
$(idhs).slideToggle("slow");
return false;
});
});
答案 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)
var id=null;
$('.box').click(function() {
id = $(this).attr("id");
});
$(".hs").click(function() {
$("#"+id).slideToggle("slow");
return false;
});
答案 6 :(得分:0)
您可以传入一个对象作为click函数的引用 并从回调中更改值。另一个选择是使用闭包 对这个jsfiddle的警告是你必须先调用.box元素。
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);
});