2012-07-29 48 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