【问题标题】:jQuery selector having trouble with & operator in kendo grid namejQuery 选择器在剑道网格名称中使用 & 运算符时遇到问题
【发布时间】:2017-07-27 20:34:58
【问题描述】:

我在我的 mvc razor 应用程序中使用 kendo gird 来实现多级详细信息行扩展功能。为了让每个网格都有唯一的名称,我有一些固定的文本加上行的唯一 ID

例如

@(Html.Kendo().Grid<MyModal>() .Name("topGrid_#=uniqueKeyColumnValue#")

然后在行展开单击时,我知道必须通过传递这个带有硬编码前缀的 uniqueKeyColumnValue 来获取哪些详细的网格数据。到目前为止一切都很好,但现在我被告知在某些值中有一些特殊字符,例如“&”运算符,当我通过将其前缀与 uniqueKeyColumnValue 连接来构造详细网格名称时

例如

    var idKey = e.sender.dataItem(e.masterRow).uniqueKeyColumnValue;

    var detailedGridName = '#detailedGrid' + idKey;
    var detailedGrid = $(detailedGridName).data("kendoGrid");

我收到以下错误

0x800a139e - JavaScript 运行时错误:语法错误,无法识别的表达式:#

在这一行

var detailGrid = $(detailedGridName).data("kendoGrid");

这显然是因为 idKey 中的 & 运算符,例如N&12345

我无法选择为网格提供硬编码名称。有什么建议吗?

【问题讨论】:

  • 最好使用_- 而不是&amp; 以避免在选择器中转义特殊字符。查看转义规则:api.jquery.com/category/selectors
  • 我不能。数据与这些字符一起存储。即使我用 _ 替换,它也可能会导致另一个挑战,即将它们恢复为检索相关密钥。虽然,我可以完全构建一个单独的字段,并通过将 & 替换为 _ 来分配修改后的值,并将其用作网格名称并保留实际的键列值。

标签: javascript asp.net-mvc razor kendo-grid kendo-asp.net-mvc


【解决方案1】:

尝试使用这种格式$("div[id='detailedGrid_" + idKey + "']").data('kendoGrid')

【讨论】:

    【解决方案2】:

    你需要用\\ 转义&amp;,最好不要使用它。 _/-可以达到目的。

    $('#N\\&amp;12345').text('Yahoooooooooooooooo')
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div id="N&12345"></div>

    如果您使用的是 jQuery 3,则可以使用 jQuery.escapeSelector( selector )

    $('#' + jQuery.escapeSelector('N&amp;12345')).text('Yahoooooooooooooooo')
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
    <div id="N&12345"></div>

    【讨论】:

    • 不知道索引位置怎么办?
    • @LearningCurve,您使用的是哪个版本的 jQuery?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多