【问题标题】:string concatenation inside jquery selectorsjquery选择器中的字符串连接
【发布时间】: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%>');
    }

我知道我的问题是字符串的串联,但我不知道如何解决。

【问题讨论】:

  • 你的问题不是字符串连接。

标签: asp.net javascript jquery jquery-selectors


【解决方案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);
    }
    

    但可能有更好的方法来做你想做的事。

    你能提供更多细节吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多