2013-12-23 108 views
2

我首先聲明我的變量 - 然後讓我的jquery:聲明的變量似乎並沒有全球

var cimg = ''; 
jQuery(function($) { 
    $(".trigger").click(function() { 
    var cimg = event.target.id; 
    clickedimage(); 
    loadPopup(); 
}); 
}); 

然後jQuery的外的腳本:它似乎

function clickedimage() 
    { 
    var xmargin = $(cimg).width()/2; 
    var ymargin = $(cimg).height()/2; 
    $("#popupimage").css('margin-left',-xmargin+'px') 
    $("#popupimage").css('margin-top',-ymargin+'px') 
    var Clicked = cimg.src; 
    $('#popupimage').attr('src',Clicked); 
    } 

不想要拿起從.trigger提供的cimg值點擊事件

我在這裏做錯了什麼?

回答

5

在點擊事件中你做了var cimg = ...;var關鍵字告訴它創建一個新的局部變量,而不是使用外部作用域中的變量。

刪除處理程序中的var

var cimg = ''; 
jQuery(function($) { 
    $(".trigger").click(function(event) { 
     cimg = event.target.id; 
     clickedimage(); 
     loadPopup(); 
    }); 
}); 
+0

doufas :)謝謝你這麼多 – rootsup

+0

是否有任何理由我CIMG值(元素ID)不會與變量/ CSS寫入我有工作?如果我提醒cimg,我會得到正確的選定圖像ID,但它似乎不想正確編寫css或屬性。 – rootsup

+0

@rootsup:你在做'$(cimg)'。 'cimg'不*包含有效的jQuery選擇器。你需要做:'$('#'+ cimg)'。 'cimg.src'也不行,因爲'cimg'是一個字符串。 –

1

您重新聲明var cimg這使其成爲函數範圍內的局部變量。另外,你不提供event,這也會導致錯誤(一些瀏覽器允許引用window.event)。這裏

jQuery(function($) { 
    $(".trigger").click(function(event) { 
     cimg = event.target.id; 
     clickedimage(); 
     loadPopup(); 
    }); 
}); 
+0

我可以如此宣佈活動嗎? 「click.target.id;」 ?或者我會如何追加這個? – rootsup

+0

一些瀏覽器創建'window.event',它是用於遺留代碼的。 –