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,那么我将看看这个问题。