私は今、多くのオプションを試しました!jQueryでコードで指定された要素から、指定されたクラスの次の要素を選択します。
ASPで作成されたサムネイルを含む一連の要素があり、AJAXの読み込みによってページに動的にレンダリングされます。これらのアイコンの中には、クリックすると画像が拡大されるアイコンがあります。
繰り返しHTMLは次のようになります。だから、
<div class="prodImgContainer">
<img src="*url*" id="*id*" class="itemImages" />
<div class="imgControl">
<span class="tinyIcons tinyDelete imgDelete" id="delete*id*"></span>
<br />
<span class="tinyIcons tinyZoom imgZoom" id="zoom*id*"></span>
</div>
</div>
、クラスimgZoom
と、あなたは何もそれは拡大を発射するとき。これは私がモーダルウィンドウを読み込むための標準関数によって行われます。
$('.imgZoom').live('click', function() {
var prodId = $('#productId').val();
var thisImage = ($(this).attr('id').replace('zoom', '')).replace('-tb', '');
var img = $("<img />").addClass('nextImg').attr('id', 'thisImg' + thisImage).attr('src', '*BASE URL *' + prodId + '/' + thisImage + '.jpg').load(function() {
if (!this.complete || typeof this.naturalWidth == "undefined" || this.naturalWidth == 0) {
alert('broken image!');
} else {
$("#largeImgContainer").empty();
$('#showImg').click();
$("#largeImgContainer").css('display', 'none').append(img).delay('1000').fadeIn('slow');
};
});
});
上記のコードは、拡大されたイメージを既存のコンテナに読み込みます。
今、... click
イベントを次のimgZoom
要素でトリガーできるように、作成された画像をクリックします。
呼び出し元の要素はしかし、コードされなくなったので、私はこのようにそれを行うにしようとしています:
ここ$('.nextImg').live('click', function() {
var nextImage = ($(this).attr('id').replace('thisImg', '')).replace('-tb', '');
$('#zoom' + nextImage + '-tb').next('.nextImg').click();
});
、私はもともと開くようにクリックされた要素のIDを決定することができていませんこの画像
まで私が何をしないのです...私は、クラスnextImg
で、次のいずれかを見つけ、それに
をクリックし、その要素を見つけるために、$('#zoom' + nextImage + '-tb').next('.nextImg').click();
を期待しています。しかし、それは仕事をdoesntの?
私は同じ間違いをしましたが、 '.next()'はそうではありません。これは、現在の要素の直後にある要素をDOM **内に返します。**がセレクタと一致する場合はそれを返します。そうでない場合は要素を返しません。 –