0

ツリービュー (ダイナ ツリー バージョンを使用) があり、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の解析時にエラーが発生します。何が間違っていて、どの文字を使用すべきかについて何かアドバイスはありますか?

4

2 に答える 2

1

は正規表現の特殊文字である/\|/gため、正規表現は である必要があります。|とにかく、これは非常に恐ろしい方法です。要素に直接jsonを含めることができます:

<span id="hello" data-json='{"ID":3, "TYPE": 3}'></span>

jQuery は、次を使用すると、json を自動的に解析します.data()

$("#hello").data("json").TYPE; //3

http://jsfiddle.net/jJQ7z/

于 2012-12-12T12:13:38.310 に答える
0

ID にこれらの種類の値を使用しないでください。id は、ページ上の特定のオブジェクトの単純な主格識別子であると想定されており、特に JavaScript 呼び出しのオブジェクトを取得するために使用されます。ID を必要とするページ上の要素にのみ ID を付与することをお勧めします。これにより、ID を使用しない要素に適切な ID 名を使い果たすのを防ぐことができます。

タグに補足データを含める必要がある場合は、 で始まるカスタム タグを作成できますdata-。これらの種類のタグには、必要な情報をいくつでも入れることができ、完全に有効な HTML のままです。例えば:

<li data-myId="3" data-type="3">

その後、他の属性値と同様に、これらの値を JavaScript で取得できます。

于 2012-12-12T12:10:02.307 に答える