这个jQuery选择器是什么意思:a[@rel*=lightbox]?

5

我正在对一些逻辑进行重构,然后遇到了这段代码,我仍在尝试理解它

  try {
   $('a[@rel*=lightbox]').lightBox(); 
  } catch (e) {}

我理解try catch部分,但这部分是什么意思?
('a[@rel*=lightbox]')

可能想要使用 $('a[rel~=lightbox]').lightBox(); 而不是使用*=, 因为~=查找整个单词lightbox, 而*=只查找子字符串,例如,“notalightbox”将包含在*=方法中。 - Joshua Pinter
5个回答

12

这是使用旧版XPath的方法来表示查找带有lightbox作为rel属性值的锚点。因此,它将匹配像下面例子中的锚点...

<a href="http://example.com/image.jpg" alt="image" rel="external me lightbox">Link</a>

该方法已被废弃,并在jQuery新版本中移除。要使其与最新的版本兼容,只需删除@符号即可:

$('a[rel*=lightbox]')

2

这是一个使用已弃用的@(XPath)语法的属性包含选择器,具体相关信息请参考此链接


1

有一种更好的方法来编写这个选择器。

$('img[rel="lightbox"]')

这将选择任何带有“lightbox”关系的图像标签。如果您已经正确地包含了所有脚本,就不需要使用try语句,它应该可以正常工作。


1
但它与@alex的答案中的rel="external me lightbox"不匹配。 - jcubic
然后你可以简单地使用 =,如下所示:$('img[rel="lightbox"]') - Mitch Malone

0

它选择所有包含属性rel中的lightbox的链接


0

它正在查找页面上具有 somelink 的链接,以启动一个 lightbox 窗口。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接