1

有没有办法获取具有值属性的元素。该属性有多个值。这些值是空格分隔的。

<div data-bind-contains="Header-Logo Footer-Logo"></div>

它的问题$('[data-bind-contains*=Header-Logo]')将全部返回。那个元素$('[data-bind-contains*=Header-Logo-Something]')也是。

<div data-bind-contains="Header-Logo Footer-Logo"></div>
<div data-bind-contains="Header-Logo-Looper"></div>

选择器$('[data-bind-contains*=Header-Logo]')将返回不是我的意图。

4

3 回答 3

5

使用~(属性包含单词)匹配选择器

$('[data-bind-contains~=Header-Logo]')

这将为您提供与属性值匹配的确切单词,因此这应该排除yourword-something.

小提琴来证明差异。

文档

于 2013-06-22T06:42:06.097 回答
0

试试这个

$('[data-bind-contains*="Header-Logo "]')

此返回具有 data-bind-contains 属性值的元素以“Header-Logo”开头

在 jQuery 中的属性值和属性值处放置一个空格,以便它只返回具有值的元素"Header-Logo<space>+<some_other_class>"

于 2013-06-22T06:46:22.837 回答
0

从您的问题来看,您似乎无法保证“Header-Logo”是您的值列表中的第一个字符串。

在选择器调用的函数中更具体地针对适当的正则表达式测试该值肯定不是问题,是吗?这可能比需要的时间长一点,但显示了这个想法......

$('[data-bind-contains*=Header-Logo]').click( function() {
    var str = $(this).attr('data-bind-contains');
    var pat=/\bHeader-Logo\b/;
    if (str.match( pat)) {
      // do some stuff
    }
});
于 2013-06-22T07:02:58.730 回答