jquery选择器中的字符串连接
Posted
技术标签:
【中文标题】jquery选择器中的字符串连接【英文标题】:string concatenation inside jquery selectors 【发布时间】:2011-01-13 01:16:44 【问题描述】:我正在用 C#、ASP.NET 开发一个应用程序,我的页面中有很多 os div,每个 div 都是聊天消息的容器,每个 div 都有一个唯一的 id:像这样
"<div id='" + myMsgs[j].id_chat_message + "' style='padding: 10px;'>"
所以,每个 div 在页面和数据库中都有相同的 id。
现在想用 jquery 找一些 div,但它不起作用
for (var j = 0; j < myMsgs.length; j++)
findDiv = $('#<%= ' + myMsgs[j].id_chat_message + '.ClientID%>');
我知道我的问题是字符串的串联,但我不知道如何解决。
【问题讨论】:
你的问题不是字符串连接。 【参考方案1】:当您尝试像这样在 aspx 页面中使用服务器标签时,您是在告诉 ASP .NET 在呈现期间处理页面并将所有这些标签替换为相应的值或评估值。由于您尝试使用 javascript 在服务器标签中动态构建字符串,因此 ASP .NET 不会处理该字符串,您最终会得到如下代码:
$("#<%=id1.ClientID %>")
ASP .NET 只在呈现页面时处理这种类型的标签(已经完成),而且它只在客户端运行,所以这不起作用。
你应该可以这样做:
for (var j = 0; j < myMsgs.length; j++)
findDiv = $('#' + myMsgs[j].id_chat_message);
【讨论】:
感谢您的解释。在我不测试它之前我应该想到这一点,但我相信它会起作用。【参考方案2】:最简单的方法是:添加一个class
-property,然后您可以通过 jQuery 访问它 - 例如。
var messageBoxes = $('.mySpecialCssClass');
您现在可以遍历这个数组并使用 jQuery/javaScript 做一些事情!
【讨论】:
【参考方案3】:根据您的代码,“myMsgs”应该是这样的(在 javascript 中):
var myMsgs = ["id_chat_message":"id1","id_chat_message":"id2","id_chat_message":"id3"];
这意味着这会让你得到你想要的 div:
for(var j = 0, l = myMsgs.length; j < l; ++j)
$("#" + myMsgs[j].id_chat_message);
但可能有更好的方法来做你想做的事。
你能提供更多细节吗?
【讨论】:
以上是关于jquery选择器中的字符串连接的主要内容,如果未能解决你的问题,请参考以下文章