2013-04-25 84 views
0

我有两个代表相同用户属性的html元素(span和input)。在我的JQuery脚本中,我想选择两个元素。我发现,要做到这一点的唯一方法是指定不同的ID,并执行两个查询Jquery按类替代选择

$("#span\\.firstName") 
$("#input\\.firstName"). 

在我寻找另一种解决方案的时刻。我想用class属性(指定的跨度和输入类的firstName,然后执行

$(".firstName") 

),但CSS是没有准备好,我不知道 将需要哪些类,所以我不能用它。你知道吗,如果存在任何其他解决方案来执行此选择,就像使用class属性一样。

<td> 
    <div> 
    <span id="span.firstName">${user.firstName}</span> 
    <span id="span.lastName">${user.lastName}</span> 
    </div> 
    <div> 
    <span>First name</span><input id="input.firstName" value="${user.firstName}"/> 
    <span>Last name</span><input id="input.lastName" value="${user.lastName}"/> 
    </div> 
</td> 
+1

你不应该使用HTML元素的id点'.' – 2013-04-25 08:24:41

+0

好吧,我删除了我的回答这个问题,你的问题是不清楚,坦率地说,获得有效答案的低估是坦率的荒谬。 – 2013-04-25 08:30:02

+0

点id是HTML规范允许的。我需要在ID中显示层次结构。是否有其他变体可以做到这一点? – mvb13 2013-04-25 08:30:47

回答

3

实际上,你可以做一个选择,像这样:

$("[id*='firstName']") // this will give both span and input of firstName etc 

Official Document

+0

@Toni Toni Chopper,请告诉我您对此解决方案进行投票的理由。 – 2013-04-25 08:28:58

+0

我没有降低你的评分 – 2013-04-25 08:29:54

+0

然后我很想知道谁有这个,这对于这个场景来说很理想。 – 2013-04-25 08:30:29

1

可以使用Attribute Contains Selector [name*="value"]做到这一点:

$('[id*="firstName"]') 

FIDDLE

+0

谢谢。这是我正在寻找的。还有一个问题,我可以在id中使用分隔符号而不是点符号。 – mvb13 2013-04-25 08:45:45

+0

原始答案后13分钟,使用完全相同的代码,这一个得到信用...什么? – 2013-04-25 08:48:57

+0

@Chris Dixon对不起,我看着顶部。这是解决我的问题的解决方案。 – mvb13 2013-04-25 08:52:49