我有一个树视图(使用dyna树版本),我已经扩展了JS以包含多个上下文菜单。
最初我在使用
<li id="@ID@:3.@TYPE@:3">
保存我可能需要的详细信息并将其转换为JSON,如下所示:
//Gets the ID value
var node = $.ui.dynatree.getNode(span).toString()
node = node.replace(/|/g, '\"')
node = node.replace(".", ',')
node = jQuery.parseJSON('{' + node + '}');
这很好,但不幸的是,这是用于剃刀MVC视图,所以@已经出局了。我想要@@所以想到了一个|可能是一个更好的分离器
<li id="|ID|:3.|TYPE|:3">
但是将JS改为
var node = $.ui.dynatree.getNode(span).toString()
node = node.replace(/|/g, '\"')
node = node.replace(".", ',')
node = jQuery.parseJSON('{' + node + '}');
解析JSON时,给出了一个错误。对于什么是错误以及我应该使用什么角色有什么建议吗?
答案 0 :(得分:1)
正则表达式应该是/\|/g
,因为|
是正则表达式中的特殊字符。无论如何,这是非常可怕的方法,你可以直接在一个元素中使用json:
<span id="hello" data-json='{"ID":3, "TYPE": 3}'></span>
当你使用.data()
:
$("#hello").data("json").TYPE; //3
答案 1 :(得分:0)
您不应该为id使用这些类型的值。 id应该是页面上给定对象的简单主格标识符,首先用于获取JavaScript调用的对象。优良作法是仅向页面上需要它们的元素提供ID,因为它会阻止您在不使用它们的元素上使用好的id名称。
如果您需要在代码中添加补充数据,则可以创建以data-
开头的自定义代码。您可以将任何您想要的信息放入您想要的这些类型的标签中,它仍然是完全有效的HTML。例如:
<li data-myId="3" data-type="3">
然后,您可以像在任何其他属性值中一样在JavaScript中检索这些值。