0

フォルダーからギャラリーに画像をロードする動的なphpフォトギャラリーの属性をテストしようとしています。ギャラリーはライトボックスを使用して、クリックすると写真を表示します。これは私がテストするために使用しているものです:

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

デバッグで初期エラー(nullのメソッド'attr'を呼び出せない)が発生します。これは、ギャラリーの画像がクリックされたときに#lightboxImageに'src'属性しかないためだと思います。ページが最初に読み込まれたとき、明らかに何もクリックされていません。

これを解決する方法について何かアイデアはありますか?

ありがとう

4

2 に答える 2

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

したがって、マルヴォーリオが示唆しているように、実際の問題は他の何かと関係があります。jQuery()の代わりに試してみるべきかもしれないことを除いて、私は必ずしもマルヴォーリオが持っているものよりも良いと推測することはできません$()


これは根本的な問題の少し横にありますが、あなたが尋ねたことと関係があります。テストを行う代わりに、次のことができます。

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

http://jsfiddle.net/jSQ3P/3

セレクターで、チェックをバイパスします。つまり、次のようになります。

$('#lightboxImage[src]:not([src=""])').doStuff();
于 2012-07-29T22:56:09.840 に答える
0

このコードを発生させる必要がある要素のクリックイベントにコードを添付して、必要なときにだけ呼び出されるようにしてみませんか?

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

});
于 2012-07-29T22:45:23.893 に答える