【问题标题】:How can I simplify this jquery?我怎样才能简化这个jquery?
【发布时间】:2009-12-03 07:05:57
【问题描述】:
我有以下想要简化的 jquery。
我只是在重复同样的事情。
谁能给我建议。
提前致谢。
$("a[rel='imagebox-all']").colorbox({slideshow:true});
$("a[rel='imagebox-new']").colorbox({slideshow:true});
$("a[rel='imagebox-even']").colorbox({slideshow:true});
$("a[rel='imagebox-amina']").colorbox({slideshow:true});
$("a[rel='imagebox-cumulus']").colorbox({slideshow:true});
$("a[rel='imagebox-wee']").colorbox({slideshow:true});
$("a[rel='imagebox-four']").colorbox({slideshow:true});
$("a[rel='imagebox-teen']").colorbox({slideshow:true});
【问题讨论】:
标签:
javascript
jquery
jquery-selectors
【解决方案1】:
假设没有您要排除的 imagebox-* 的其他值:
$("a[rel^='imagebox-']").colorbox({slideshow:true});
话虽如此,通常最好避免使用属性选择器,并且通常最好重组问题以提供更好的解决方案。就像你可以使用类一样:
<a href="..." class="imagebox teen"> ...
注意空格:这是分配的两个类。所以你可以这样做:
$("a.imagebox")...
为所有人。或者:
$("a.imagebox.teen")...
只为其中之一。
请记住,您可以使用逗号添加多个选择器:
$("a.class1, a.class2")...
将您正在执行的操作应用于具有 class1 或 class2 的锚点,而不是:
$("a.class1.class2")...
它将您正在执行的任何操作应用于具有 class1 和 class2 的锚点。
【解决方案2】:
您可以使用attributeStartsWith 选择器来匹配具有指定属性的元素,并且它以某个值开头。
$("a[rel^='imagebox-']").colorbox({slideshow:true});
【解决方案3】:
你能用吗
$("a[rel^='imagebox']").colorbox({slideshow:true});
适用于任何带有以imagebox开头的rel属性的a标签?
【解决方案4】:
记住至少要像这样结构化。
$("a[rel='imagebox-all']")
.colorbox({
slideshow: !0
}), $("a[rel='imagebox-new']")
.colorbox({
slideshow: !0
}), $("a[rel='imagebox-even']")
.colorbox({
slideshow: !0
}), $("a[rel='imagebox-amina']")
.colorbox({
slideshow: !0
}), $("a[rel='imagebox-cumulus']")
.colorbox({
slideshow: !0
}), $("a[rel='imagebox-wee']")
.colorbox({
slideshow: !0
}), $("a[rel='imagebox-four']")
.colorbox({
slideshow: !0
}), $("a[rel='imagebox-teen']")
.colorbox({
slideshow: !0
})
【解决方案5】:
试试这个:
var selectors = [
"a[rel='imagebox-all']",
"a[rel='imagebox-new']",
"a[rel='imagebox-even']",
// ...
];
$.each(selectors, function(){
$(this).colorbox({slideshow:true});
});
然后,每当您需要添加新的选择器时,只需将其添加到选择器数组中即可。