我已经尝试了很多选择了!
我有一组包含缩略图的元素,由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');
};
});
});
上面的代码将放大的图像加载到现有的容器中。
现在...我希望能够通过单击创建的图像在下一个imgZoom
元素上触发click
事件。
但是调用元素已经不在代码中了,所以我试着这样做:
$('.nextImg').live('click', function () {
var nextImage = ($(this).attr('id').replace('thisImg', '')).replace('-tb', '');
$('#zoom' + nextImage + '-tb').next('.nextImg').click();
});
在这里,我能够确定最初点击打开此图像的元素的ID
然后,我期待$('#zoom' + nextImage + '-tb').next('.nextImg').click();
找到该元素,然后找到类为nextImg
的下一个元素并单击它
但它不工作…我错过了什么
5条答案
按热度按时间m0rkklqb1#
您应该能够将单击附加到动态创建的图像元素上,以触发对下一个imgZoom元素的单击,即比如:
iibxawm42#
我自己也犯过同样的错误,但是.next()不是这样工作的。它所做的是返回紧接在DOM中当前元素之后的元素**,只有当**它匹配选择器时,否则它不返回任何元素。
如果你想让DOM中当前选中的元素之后的第一个元素与特定的选择器匹配,你可以使用这样的方法:
vjrehmav3#
next()
只返回DOM中的下一个元素(紧接着它的元素),您可以这样做从文档中提取
给定一个表示一组DOM元素的jQuery对象,.next()方法允许我们在DOM树中搜索这些元素的紧接着的兄弟,并从匹配的元素构造一个新的jQuery对象。
该方法可选地接受与我们可以传递给$()函数的类型相同的选择器表达式。如果紧随其后的兄弟对象与选择器匹配,则它将保留在新构造的jQuery对象中;否则将其排除。
ecbunoof4#
很难理解你想要什么,你的语言和代码之间存在差异。
也许这条线
这将起作用:
我不明白的是:'-tb'的用法-它在哪里是id的一部分,在哪里不是?为什么调用.next('. nextImg')?我以为你想点击下一个imgZoom元素。在您的代码中,只有largeImgContainer中的(单个)图像具有nextImg类。
3xiyfsfu5#
啊!
以上都不起作用,但谢谢你的帮助。
我最终创建了一个图像数组,并传递了位置,因此下一个图像单击将打开数组中下一个位置的文件。