data 属性に JSON 文字列が格納されています。
{
"active": true,
"icons": {
"activeHeader": "ui-icon-alert"
},
"animate": {
"duration": 1000,
"always": dMethod
}
}
そして、dMethodという名前の関数があります:
function dMethod() {
alert("DONE");
}
文字列を解析しようとすると、JSON.parse
無効な文字というエラーが表示されます。parse メソッドの実行時に dMethod が定義されていることを確認し、「always」:dMethod 部分を削除すると、パーサーは正しく機能しました。dMethod を引用符で囲むことはできません。型がオブジェクト関数ではなく文字列型になるためです。
どんな助けでも大歓迎です。
ありがとう、
ピーター
編集:
すべての回答に感謝します。問題をよりよく理解できるように、いくつか説明します。jqueryui を邪魔にならないようにするために、非常に単純な js ライブラリを作成します。
var juiObjects = ["accordion", "autocomplete", "button", "datepicker", "dialog", "menu", "progressbar", "slider", "spinner", "tabs", "tooltip"];
$(document).ready(function() {
for (var i = 0; i < juiObjects.length; i++) {
var attributeName = "data-" + juiObjects[i];
$("["+ attributeName + "]").each(function () {
var optionsValue = $(this).attr(attributeName);
var options = JSON.parse(optionsValue);
$(this)[juiObjects[i]](options);
});
}
});
JSON.parse と eval のどちらかを選択する必要がありました。しかし、evalはあまり良い選択ではないと思います。そして、「ライブラリ」をできるだけシンプルに保つようにしてください。しかし、ウィジェットに沿ってコードをspareteしたようです。