获得具有匹配类的最接近元素

时间:2013-06-08 02:29:28

标签: jquery jquery-selectors

我正在使用jquery 1.3.2。我希望得到最接近单击按钮的div,基于它的类名称的一部分,它始终以“wrapID-”开头。基本上我在具有相同ID的页面上有2个提交表单。每个提交表单附近都有一个产品图片。我需要根据点击的按钮打印图像。我的代码不起作用,可能出错?我无法访问html,我知道相同的ID无效。

$(document).ready(function(){ 

$('.form-submit').click(function() {
var closestwrap = $(this).closest('div[class^="wrapID-"]');
cls = closestwrap.attr('class');
$('.'cls+' img').printElement();
}                           
});

这是我的代码http://jsfiddle.net/gPJrB/3/

1 个答案:

答案 0 :(得分:0)

尝试构建另一个选择器没有用处。这通常不会起作用(如果closestwrap有多个类会怎么样?),它也是低效的。

只需使用find上的closestwrap找到您的img元素:

$(document).ready(function(){ 
    $('.form-submit').click(function() {
        var closestwrap = $(this).closest('div[class^="wrapID-"]');
        closestwrap.find('img').printElement();
    });                  
});

我认为$.printElementthis jQuery plugin?如果您下次在问题中包含链接,可能会有所帮助。

编辑:我检查了你的小提琴,看起来你的HTML结构有点尴尬。我在wrapID-* div内移动了提交按钮,因此closest实际上找到了divCheck out the fiddle!

请注意,此插件在jQuery 1.9及更高版本中断,最高兼容版本为1.8。这是因为它使用已弃用的$.browser属性进行浏览器嗅探,这些属性已在1.9中删除。您可以使用jQuery Migrate插件(as in this fiddle)或自行更新插件。有可能这些浏览器测试需要修订这些浏览器的最新版本。