データオプション内で 'id'と 'selected'を更新しようとしています。jqueryでデータオブジェクトを更新します
HTML:
<span class="re_highlight-feature" data-toggle="tooltip" data-animation="false" data-placement="top" title="" data-options="{'id':0,'name':'Appliance','value':'Dryer','selected':false}" data-original-title="Highlight Dryer">Dryer</span>
私はそれらを参照して、私のAJAX機能に正しい値を渡すことができています。
JS:
$('.re_highlight-feature').click(function(e) {
e.preventDefault();
var feature = $(this);
var featureDislay = feature.text();
var featureData = feature.data('options');
feature.html('<i class="fa fa-refresh fa-spin fa-fw"></i><span class="sr-only">Loading...</span>');
$.ajax({
type:"POST",
url: "/wp-admin/admin-ajax.php",
data: {action:'highlightFeature', id:featureData.id, name:featureData.name, value:featureData.value, selected:featureData.selected},
success:function(json){
obj = JSON && JSON.parse(json) || $.parseJSON(json);
var recordID = obj.id;
if (recordID == 0){
featureData['id'] = 0;
featureData['selected'] = false;
} else {
featureData['id'] = recordID;
featureData['selected'] = true;
}
feature.html(featureDislay);
feature.toggleClass('mark');
},
error: function(errorThrown){
alert(errorThrown);
}
});
return false;
});
すべてが、この以外に動作します:
if (recordID == 0){
featureData['id'] = 0;
featureData['selected'] = false;
} else {
featureData['id'] = recordID;
featureData['selected'] = true;
}
私は私の元の要素の中にこれらの値を更新する方法を見つけ出すことができませんでした。 HTML
でdata-*
の性質は、二重引用符で囲まれたプロパティを設定する必要がありますdata-*
HTML
document
内JSON
として有効な属性値を
'console.log(typeof featureData)'を実行すると、 'オブジェクト'ではなく 'string'を得ることができます。 jQueryで解析したい場合は、***有効な*** JSONでなければならず、それは二重引用符を意味します。 – adeneo
[これを守る](https://jsfiddle.net/adeneo/nnov3r7u/1/) – adeneo
コンソール.log(typeof featureData)返されたオブジェクト –