0

这不起作用

var name= "#443.selected:first";
selectedEntity = $(name).attr('entityId');

这有效

var name= "li.selected:first";
 selectedEntity = $(name).attr('entityId');

selectedEntity未定义,但确实存在 id="443" class="selected" 的元素。

为什么第一个示例不起作用?

4

2 回答 2

1

您可以使用属性选择器:

$('[id="443"].selected:first')

看到这个jsFiddle 演示

于 2013-04-10T14:55:17.390 回答
1

尽管在 HTML5 ID 以外的 HTML 中不允许使用以数字开头的 ID,但您的选择器应该可以工作(工作 Demo)。您的代码和/或标记中的其他地方一定有错误。

您应该解决几个问题:

  1. ID 必须是唯一的,否则您的 HTML 无效
  2. 过度使用 ID-Selector 对性能不利,因为 1) 甚至没有必要
  3. ID-Selectors 只返回第一个元素,所以 using:first是无用的(也受第 1 点影响)
  4. 不要使用自定义属性,例如entityId. 而是使用data-前缀. 然后您可以使用jQuerys 数据方法来获取/设置这些属性。(但请注意,您不能使用camelCase)。
于 2013-04-10T15:19:39.673 回答