2010-02-17 52 views
0

我試圖訪問在函數外部設置的.click函數內的變量的值,但我會得到錯誤,任何人都可以告訴我我做錯了什麼?當單擊事件處理至少運行一次,因爲你設置事件處理程序jquery中的變量作用域

回答

3

點擊還不occure裏面的id變量

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

嗨,感謝您的迴應,我設置點擊功能的id的原因是因爲我顯示基於ID的不同畫廊,所以我得到的ID值一旦點擊並顯示相應的畫廊,也每個圖庫中有不同數量的幻燈片,這就是爲什麼numberOfSlides需要連接到Clickv函數 – amir 2010-02-17 12:28:03

+0

內的特定ID做了更新! – 2010-02-17 12:33:55

3

ID纔會被置,所以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; 
} 
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,直到這個事件被觸發,它纔會被設置。