我正在尝试访问在函数外部.click
函数内设置的变量的值,但我会收到错误,有人可以告诉我我做错了什么吗? / p>
var id;
var currentPosition;
var slideWidth = 368;
var slides;
var numberOfSlides;
$('#accordion_catering h3').click(function() {
id = $(this).attr('id');
$('#' +id+'_gallery').show();
//alert(id);//works
});
alert(id); // is undefined
// Because id is undefined these don't work .
slides = $('.' + id + '_slide');
numberOfSlides = slides.length;
答案 0 :(得分:3)
id仅在click事件处理程序至少运行一次时设置,因为您在事件处理程序中设置了id变量
答案 1 :(得分:3)
点击还没有发生,所以id没有设置...它不是关于变量范围,更多关于事件及其处理程序:)
当你添加一个cmt时,我调整了我的解决方案如下:
var currentPosition;
var slideWidth = 368;
var slides;
var numberOfSlides;
$(document).ready(function() {
var element = $('#accordion_catering h3');
element.click(function() {
var id = $(this).attr('id');
DisplayGallery(id);
});
element.trigger('click'); // maybe you want to trigger it
});
function DisplayGallery(id) {
$('#' + id +'_gallery').show();
slides = $('.' + id + '_slide');
numberOfSlides = slides.length;
}
答案 2 :(得分:0)
var id;
var currentPosition;
var slideWidth = 368;
var slides;
var numberOfSlides;
$(document).ready(function() {
$('#accordion_catering h3').click(function() {
id = $(this).attr('id');
$('#' +id+'_gallery').show();
//alert(id);//works
slides = $('.' + id + '_slide');
numberOfSlides = slides.length;
});
$('#accordion_catering h3').trigger('click');
alert(id); // is defined
)};
因此,基本上,在此事件触发之前不要访问id,然后将设置它。