Я имею (приблизительно год назад) играемый вокруг с Ch и нашел, что он был довольно хорош.
Ваш первый способ нацелился только на png и отлично работал в FF 3.5, похоже, ваш обновленный способ тоже работает.
$('<a href="foo.png">foo.png</a> <a href="foo.jpg">foo.jpg</a> <a href="foo.gif">foo.gif</a>').appendTo('body')
$('a[href]').filter(function() {
return /(jpg|gif|png)$/.test( $(this).attr('href'))
}).addClass('image-link')
alert( $('.image-link').length )
Вы уверены, что делаете это на готовой DOM, и что вы ' повторный таргетинг на нужный материал, без опечаток?
$('<a href="foo.png">foo.png</a> <a href="foo.jpg">foo.jpg</a> <a href="foo.gif">foo.gif</a>').appendTo('body')
$('a[href*=".png"]').addClass('image-link');
$('a[href*=".jpg"]').addClass('image-link');
$('a[href*=".gif"]').addClass('image-link');
alert( $('.image-link').length )
^ это также предупредило меня о 3.
Обновлено: более лаконичный селектор был бы ..
$('a[href*=".png"], a[href*=".gif"], a[href*=".jpg"]')
Попробуйте что-нибудь вроде этого (обратите внимание на одинарные кавычки вокруг .png
):
$("a[href*='.png']").addClass("image-link");
Попробуйте следующее:
var aFileExts = new Array("png", "jpg", "fig");
for(aIndex in aFileExts) {
aFileExt = aFileExts[aIndex];
$("a[href$='.".aFileExt."']").addClass("image-link");
}
Надеюсь, это поможет.