2011-04-11 46 views
0

只用几句话,我的问题是字符串在jQuery中是一个可搜索的id或可搜索的内容的局限性。限于jQuery id字符串?


更新:我得到的ID的一部分,但不是我为什么不能,即使在HTML内容与搜索字符串。 “:MM:SS MM/DD/YY HH” 到 “以MMDDYYhhmmss”


详细情况如下:一个人愿意告诉我一个正则表达式来改变从图案BOUNS

我想使用jQuery获取多个<p>中的文本。

我加入他们的方法是使用下面的代码:

$("<p>"+data.timeStamp + " _ " + data.text +"</p>") 
    .addClass(data.source) 
    .attr("id", "msg_"+data.userId+"_"+data.timeStamp) 
    .appendTo($("#messages_"+data.userId)); 

他们看起来不错,我可以添加多达我可以。但是,然后,我需要获取每个内的文本以附加响应。我使用userIdtimeStamp来查找我需要追加的段落。它工作得很好,如果timeStamp只是一个数字(例如,通过了Java Servlet创建为

SimpleDateFormat df = new SimpleDateFormat("MMddyyHHmmss"); 

但jQuery是无法找到它,如果时间戳是有点复杂:

SimpleDateFormat df = new SimpleDateFormat("MM/dd/yy HH:mm:ss"); 

或甚至

SimpleDateFormat df = new SimpleDateFormat("MM-dd-yy HH.mm.ss"); 

我都尝试

var txt = $("#msg_"+data.message.from+"_"+data.message.timeStamp).html(); 

var txt = $("#messages_"+data.userId).find(":contains('"+data.message.timeStamp+"')").html(); 

无济于事。

由于console.log (response.timeStamp);会给出正确的输出,所以JSON在ajax调用期间被编码和解码得很好。

任何想法?我应该逃避timeStamp字符串在jQuery搜索中使用它吗?

PS 1:如果您发现任何语法错误,这最有可能是由于切&粘贴和简化的例子的代码,因为一个简单的timeStamp我可以使它在实际js文件工作。

PS 2:我知道,在我的特定情况下,解决办法是使用两个不同的字符串,一个在文本的时间戳和一个(简单)的ID,但是这并不能帮助我理解这里的局限性。

+1

我认为ID不允许包含空格。 – 2011-04-11 10:28:32

+0

@Felix得到了,但我甚至无法找到该字符串搜索内容 – Aleadam 2011-04-11 11:30:08

回答

6

您需要为元素ID具有有效值。来自html 4规范:

ID和名称标记必须以字母([A-Za-z])开头,后面可以跟随任意数量的字母,数字([0-9]),连字符(“ - ”),下划线(“_”),冒号(“:”)和句点(“。”)。

但是,当您在ID中使用冒号和句点时,您会发现jQuery css选择器存在问题,因为它们被jQuery解析为类名称和伪元素。

所以你的元素ID只能包含字母,数字,连字符和下划线。

+2

您可以使用双反斜杠(\\\)来逃离冒号和句点 – Alex 2011-04-11 11:31:39

+0

我应该读取ID规范:/。但我仍然在寻找内容,无论哪种方式都适合我。那么,你知道我应该如何逃避这些角色? – Aleadam 2011-04-11 11:32:14

+0

@亚历克斯谢谢。我会尝试的。 – Aleadam 2011-04-11 11:33:10

0

基于评论和答案,我尝试使用双反斜杠字符串进行转义,但它不起作用(仍然没有结果),即使在搜索文本时并不使用这些长ID。所以,我最终做在客户端上删除该ID部分空格和符号:

var ts = data.timeStamp.replace(/[\:\/ ]/g, ""); 

,并在服务器上:

SimpleDateFormat df = new SimpleDateFormat("MM/dd/yy HH:mm:ss"); 

然后我说格式化的日期,以文字和剥离直到ID。它的工作原理,但我仍然对jQuery搜索字符串的局限性感到好奇。