使用公共父级聚合多个jquery选择器

使用公共父级聚合多个jquery选择器,jquery,parent-child,Jquery,Parent Child,我有几个选择器,它们有一个共同的父级。 有没有一个好方法可以将它们放在一个函数调用下? 例如: $('td.postbody').children('a[href$=".gif"], a[href$=".jpg"], a[href$=".png"], a[href$=".bmp"]').addClass("zoom2 itag").attr('title','Click to Expand Image.'); $('td.postbody').children('a[href$=".GIF"],

我有几个选择器,它们有一个共同的父级。 有没有一个好方法可以将它们放在一个函数调用下? 例如:

$('td.postbody').children('a[href$=".gif"], a[href$=".jpg"], a[href$=".png"], a[href$=".bmp"]').addClass("zoom2 itag").attr('title','Click to Expand Image.');
$('td.postbody').children('a[href$=".GIF"], a[href$=".JPG"], a[href$=".PNG"], a[href$=".BMP"]').addClass("zoom2 itag").attr('title','Click to Expand Image.');
$('td.postbody').children('a:not([class])').addClass("smlLink");
$('td.postbody').children('img:not([src^="modules/"])').attr("height", "200").addClass("image-link");
我想把它们放在一个共同的功能下,比如:

$('td.postbody').children('a','img')).each(function(){...});
我研究了变量的一些用法,但我发现它似乎不适用于此。
我的逻辑是一次选择所有$('td.postbody').children('*'),然后处理组,而不是多次扫描文档。 这是jQuery的好逻辑吗?我的方法应该有所不同吗? 谢谢, Chris

您可以在循环中使用方法

$('td.postbody').children('a, img').each(function() {
    var el = $(this);
    if (el.is('a[href$=".gif"], a[href$=".jpg"], a[href$=".png"], a[href$=".bmp"]')) {
        // do something
    } else if (el.is('a:not([class])')) {
        // do something
    } else if (el.is('img:not([src^="modules/"])')) {
        // do something
    } 
});
。。。由于选择器
[href$=]
区分大小写,您可以通过其他方式检查扩展名:

if (!!this.href && /(?:jpg|gif|png|bmp)$/i.test(this.href)) {
}

我认为单语句是不够的,但是您可以使用一些改进,比如缓存常用的td.postbody选择器,以及club第一和第二语句

var $tds = $('td.postbody');
$tds.children('a[href$=".gif"], a[href$=".jpg"], a[href$=".png"], a[href$=".bmp"],a[href$=".GIF"], a[href$=".JPG"], a[href$=".PNG"], a[href$=".BMP"]').addClass("zoom2 itag").attr('title','Click to Expand Image.');
$tds.children('a:not([class])').addClass("smlLink");
$tds.children('img:not([src^="modules/"])').attr("height", "200").addClass("image-link");

谢谢。这看起来像是我要找的。我试试看。此外,你还发现了笨拙的img检测,这个答案也谢谢!您可能还回答了第三个问题,另外一个问题是测试的堆叠顺序是否可以过滤我昨晚发现的一个非预期结果。3倍的效果,我喜欢。效果很好。到目前为止,我已经将六个选择器打包成一个电话。我检查了你的解决方案。对不起,我没有足够的声誉去做这件事。我尝试了图像选择器,但无法使其工作。这里有一把小提琴,如果你能看一下,用两个选择器。天哪,这就像有人给我的老php网站加了类固醇一样。我检查并分组了所有jquery调用,并以半优化的顺序将它们堆叠起来。分组,所以我没有破坏任何依赖关系。真不一样!似乎我误解了您的问题:“我尝试了图像选择器,但无法使其工作”。请解释一下。这个提琴显示了如何通过正则表达式检查扩展。我认为这种方法比几种
a[href$=“.jpg”]
更快。啧啧,你完全理解。是我的弱编码技巧误解了你的正则表达式。我需要处理一下。你的例子小提琴正是我想要的。再次感谢你!