jQuery选择器遇到问题& kendo网格名称中的运算符

时间:2017-07-27 12:10:02

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

我在我的mvc razor应用程序中使用kendo gird用于mutli级别细节行扩展功能。为了拥有每个网格的唯一名称,我有一些固定的文本加上行的唯一ID

e.g。

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

并在一行展开点击,我知道通过传递这个uniqueKeyColumnValue及其硬编码前缀我必须得到哪些详细的网格数据。到目前为止情况还不错但现在我被告知有一些特殊的角色,如&#39;&amp;&#39;某些值中的运算符,当我通过将其前缀与uniqueKeyColumnValue连接来构造详细网格名称时

e.g。

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

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

我收到以下错误

  

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

在这一行

  

var detailedGrid = $(detailedGridName).data(&#34; kendoGrid&#34;);

这显然是因为&amp; idKey中的运算符,例如N'安培; 12345

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

$('#N\\&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&12345')).text('Yahoooooooooooooooo')
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
<div id="N&12345"></div>