根据自定义属性的内容选择表行

时间:2012-11-07 10:24:56

标签: jquery

所以我有一个包含多行的表。每行的第一个TD内容是一个名为阵容的自定义属性标记。例如:

<td lineup="['463', '442', '200', '97', '238', '548', '166', '184', '353', '26', '573']">Some stuff</td> 

这实际上是我通过Jinja2传递给html的列表。我认为这是存储这些数据的最佳解决方案。也许我错了,我刚刚开始编码。

现在我要做的是在阵容包含特定ID时选择行。

现在我这样做:

$("#xtable tbody td[lineup*='"+ID+"'']").parent()

哪个工作很好,除非ID是63,它还会选择id为463的行。我理解为什么它这样做,因为它基本上是搜索一个字符串,他不知道463实际上不是63。

所以我的问题:

  • 有没有更好的方法将数据存储在html / js中?
  • 使用正则表达式(我不知道如何使用),我只能找到它 例如63而不是463?

修改

这是我的Jquery函数:

$('#update li').hover(function(){
        playerId = $(this).find('span').attr("pid");
        $("#xtable tbody td[lineup*='"+playerId+"'']").parent().css("background-color","#d9edf7")
        },
        function(){
            $("#xtable tbody td[lineup*='"+playerId+"'']").parent().css("background-color","")
});

获取playingId的li元素示例

<li class="pushmsg" style=""><p><span rel="tooltip" class="player-name" pid="14" data-original-title="total point: 3">Arshavin</span> just got an assist</p></li>

谢谢!

3 个答案:

答案 0 :(得分:2)

最好的方法是在您过滤的字符串中包含撇号。你应该用反斜杠作为前缀,因为你希望它被视为一个字符串。

$("#xtable tbody td[lineup*='\'"+ID+"\'']").parent()

我建议您尽可能地使用自定义属性,但如果确实需要它们,请使用data- *属性。更多信息herehere。使用数据阵容,您的代码将如下所示:

$("#xtable tbody td[data-lineup*='\'"+ID+"\'']").parent()

答案 1 :(得分:1)

删除星号*

 $("#xtable tbody td[lineup='"+ID.toString()+"'']").parent()

答案 2 :(得分:1)

$('#xtable tbody td[lineup*="\''+ID+'\'"]').parent()

在属性子字符串中包含您的ID周围的单引号以匹配,但已转义。

另外:你因尴尬而获奖。

示例小提琴:http://jsfiddle.net/GHmjr/