2012-07-29 47 views
0

我想測試一個動態php照片庫中的圖像從文件夾加載到圖庫中的屬性。畫廊使用燈箱顯示一旦點擊照片。這是我使用的測試內容:使用jquery測試元素屬性時收到的錯誤

if($('#lightboxImage').attr('src') !== 'undefined'){ do something here } 

我發現了一個初始誤差在調試(無法調用空的「ATTR」),我覺得是因爲#lightboxImage只有一個「SRC」屬性時點擊圖庫中的圖片。首次加載頁面時,顯然沒有任何內容被點擊。

關於如何解決這個問題的任何想法?

感謝

+3

不,這裏真的是錯誤的。 $(「#anything」)在任何情況下都不應該返回null,並且應始終在任何jQuery對象上定義attr()。看得更深。 – Malvolio 2012-07-29 22:42:16

+0

你確定你已經包含了jQuery嗎? – 2012-07-29 22:42:53

+0

@CharlieRudenstål:那麼'$ is not defined'將會被拋出 – zerkms 2012-07-29 22:43:30

回答

1

我與@Malvolio,你的錯誤不相當積少成多。你不應該得到你所描述的錯誤。即:

<img id="src" class="src" src="http://goo.gl/UohAz"><br/> 
<img class="src" src=""><br/> 
<img class="src"> 

console.log($('#nothing').attr('src')); 
console.log($('#src').attr('src')); 

http://jsfiddle.net/7ZGwe/

運行onload給我:

undefined 
http://goo.gl/UohAz 

所以你實際問題有其他事情做,如馬伏里奧建議。我不能推測任何比Malvolio有什麼更好的,除了可能jQuery()應該嘗試代替$()


這是旁邊根本問題一點點,但與你的要求去做。而不是做一個測試,你可以:

[src]:not([src=""]) 

http://jsfiddle.net/jSQ3P/3

在你的選擇,並繞過檢查。換句話說:

$('#lightboxImage[src]:not([src=""])').doStuff(); 
0

你爲什麼不代碼附加到元素的click事件需要提出這個代碼,以便在需要時它只是叫什麼名字?

$(document).ready(function() { 
    $("#clickable").click(function() { 
     if($('#lightboxImage').attr('src') !== 'undefined'){ 
      // do something here 
     } 
    }); 

}); 
+1

'$('#lightboxImage [src]')'會給一個元素加上'src',甚至'src =「」'。可能有用,但我不知道在這種情況下是否需要。 – 2012-07-29 22:49:36

+0

實際上['[src]:not([src =「」]'](http://jsfiddle.net/jSQ3P/)將解決空的src問題。 – 2012-07-29 22:52:06