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选择器中的字符串连接的主要内容,如果未能解决你的问题,请参考以下文章

如何处理jQuery选择器中的特殊符号

输入名称选择器中的jquery变量[关闭]

jQuery 选择器中的变量

ID选择器中的jQuery点? [复制]

在jquery中过滤日期选择器中的值[重复]

jQuery 选择器中的条件