用于非选项元素的JQuery选择器,在IE8-IE9中具有名为“selected”的属性

时间:2013-06-07 10:18:21

标签: jquery attributes selected

好吧,我有一个带有一些TR的html表格,如下所示

<tr id="myId" class="aRandomClass" selected="TRUE">...</tr>
<tr id="myId2" class="aRandomClass" selected="FALSE">...</tr>

并且有一个简单的选择器

var a=$("#"+tableId).find("[selected='TRUE']");
or
var b=$("#"+tableId + " tr[selected='TRUE']");

Firefox中的返回选择了='TRUE'的TR但是在MSIE 8-9中它什么也没有返回。我想问题是“选择”属性不应该由TR和IE发现它无效或类似的东西..但是下面的代码返回所选属性的值..

var c=$("#" + tableId + " tr").first().attr('selected');

还有一些值得注意的是,此代码也适用于IE中的JQuery 1.4.2。通过升级到JQuery 1.8.3,它仅适用于FF。

更改属性名称是我想要避免的解决方案。

我想到的解决方案是“为每个tr设置一个循环,如果选择='真'在var a中添加tr”。 有更好的建议吗?

2 个答案:

答案 0 :(得分:1)

首先,您有重复的ID,这些ID应该是唯一的。其次,您可以选择tr[selected="true"]'

而不是该属性,您应该使用data-selected,因此您有一个有效的标记。

答案 1 :(得分:1)

我建议使用.prop()代替jq 1.8.3,但我真的不确定它可以帮助你:

var $trsSelected = $("#"+tableId).find('tr').filter(function(){return $(this).prop('selected')=='TRUE'});

var $trsNotSelected = $("#"+tableId).find('tr').filter(function(){return $(this).prop('selected')!='TRUE'});