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

这个jQuery选择器是什么:一个[@rel*=lightbox]?,jquery,jquery-selectors,Jquery,Jquery Selectors,我正在对一些逻辑进行重构,我遇到了这段代码,我仍在努力理解它 try { $('a[@rel*=lightbox]').lightBox(); } catch (e) {} 我理解试抓部分,但这部分是什么 ('a[@rel*=lightbox]') 这是一种古老的XPath方式,表示在rel属性中使用lightbox查找锚点。所以它将匹配一个锚,如下面的例子 <a href="http://example.com/image.jpg" alt="image" rel="

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

  try {
   $('a[@rel*=lightbox]').lightBox(); 
  } catch (e) {}
我理解试抓部分,但这部分是什么

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

这是一种古老的XPath方式,表示在
rel
属性中使用
lightbox
查找锚点。所以它将匹配一个锚,如下面的例子

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

它选择属性rel中包含lightbox的所有链接这是一种使用不推荐的
@
(XPath)语法的链接。

它在页面上查找具有启动lightbox窗口的链接。

有更好的方法编写此选择器

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

这将选择任何具有“lightbox”关系的图像标签。你不需要做一个try语句,如果你正确地包含了所有脚本,它应该可以正常工作。

但是它与@alex answer中的rel=“external me lightbox”不匹配。然后你可以简单地使用*=like so:$('img[rel*='lightbox'])你可能想使用
$('a[rel lightbox]')。lightbox()
相反,因为
~=
查找整个单词
lightbox
而不是
*=
,后者只查找一个子字符串,例如
*=
方法中将包含“notalightbox”。
$('img[rel="lightbox"]')