jQuery prepend元素到一个href,每页只有一次
问题描述:
我有一个jQuery脚本,发现任何href链接与.jpg或.png作为源,并prepends一些额外的span元素链接。它运作良好,但是如果我在一个页面上有多个链接,prepend被添加多次。 例如,一个包含3个链接的页面,第一个标签会预先设置跨度3次,第二个标签预先设置跨度2次,第三个链接将预先设置跨度一次。 如何获得span每个标签只能预定一次?jQuery prepend元素到一个href,每页只有一次
$(document).ready(function() {
$("#main_content_container a[href$='px.jpg'], #main_content_container a[href$='.png']").each(function() {
$(this).attr('rel','lightbox').addClass("gallerypic");
$(".gallerypic").prepend("<span><img src='/images/common/zoom_in.png'/></span>");
$(".gallerypic span").addClass("zoom-icon");
});
});
答
它看起来对我来说,这两条线不必在.each()
块真正属于:
$(".gallerypic").prepend("<span><img src='/images/common/zoom_in.png'/></span>");
$(".gallerypic span").addClass("zoom-icon");
尝试.each
后移动它们,如:
$(document).ready(function() {
$("#main_content_container a[href$='px.jpg'], #main_content_container a[href$='.png']").each(function() {
$(this).attr('rel','lightbox').addClass("gallerypic");
});
$(".gallerypic").prepend("<span><img src='/images/common/zoom_in.png'/></span>");
$(".gallerypic span").addClass("zoom-icon");
});
答
我认为这是因为你正在循环匹配的元素,但然后你使用类“gallerypic”来预先配置,并且再次匹配它们。试试这个:
$(document).ready(function() {
$("#main_content_container a[href$='px.jpg'], #main_content_container a[href$='.png']").each(function() {
$(this).attr('rel','lightbox').addClass("gallerypic");
$(this).attr('rel','lightbox').prepend("<span class='zoom-icon'><img src='/images/common/zoom_in.png'/></span>");
});
});