Javascript 查找所有仅包含图像的链接
要向图像添加单击缩放功能,我使用以下代码切换一个类:Javascript 查找所有仅包含图像的链接,javascript,jquery,html,css,Javascript,Jquery,Html,Css,要向图像添加单击缩放功能,我使用以下代码切换一个类: $(document).ready(function() { var imageLinks = $('a[href$=".png"], a[href$=".jpg"], a[href$=".gif"], a[href$=".bmp"]'); if (imageLinks.children('img').length) { imageLinks.children('img').each(function() {
$(document).ready(function() {
var imageLinks = $('a[href$=".png"], a[href$=".jpg"], a[href$=".gif"], a[href$=".bmp"]');
if (imageLinks.children('img').length) {
imageLinks.children('img').each(function() {
$(this).attr('title', '(click to enlarge image)');
});
imageLinks.click(function(e) {
e.preventDefault();
$(this).children('img').toggleClass('expanded');
});
}
});
现在我的问题是,我可能有文本链接,比如
,在那个页面上,它们被这个代码破坏了
有没有办法只选择图像链接(
)而不是选择指向图像文件的所有链接
提前谢谢 您可以使用
has
语句:
var imageLinks = $('a').filter(':has(img)');
或相同:
var imageLinks = $('a:has(img)');
我相信这会奏效:
var $images = $('a > img');
$images.attr('title', '(click to enlarge image)');
$images.parent().click(function(e) {
e.preventDefault();
$(this).children('img').toggleClass('expanded');
});
示例JSFIDLE:
若img并不总是a标记的直接后代,则可以将选择器更改为
'a img'
,但随后需要将$images.parent()
更改为$images.parents('a')[0]
,首先,这是无效的html;应该是:
或
您是否可以选择a标记内的img标记,然后选择父标记。选择器应该是:$(“a>img”)或$(“a img”),这取决于图像是否必须是直系后代:对不起,我只是想指出,有链接只包含图像。这里不起作用。根本没有切换任何类,文本和图像链接都导致图像本身被打开。好吧,我的错!适应$images.parent()
后,您的解决方案也能正常工作!如果您可以尝试创建一个不起作用的JSFIDLE,那么我将看看这个问题。