2015-10-13 2 views
0

Я пытаюсь почти в течение часа, чтобы решить проблему добавления объекта JSON в атрибут элемента, используя этот код для того, чтобы поиграть в видео:Как добавить объект JSON в атрибут элемента с помощью JQuery

var json = JSON.stringify({"techOrder": ["youtube"], "src": "https://www.youtube.com/watch?v=LKRaXPYSzKY" }); 
$('#popup-companyPitch').html('<video id="vid1" src="" class="video-js vjs-default-skin" controls preload="auto" width="580" height="360" data-setup="'+json+'"></video>'); 

у меня то же самое в другой части моего сайта, где я использую PHP, чтобы захватить данные из БД, и он просто работает прекрасно:

<video id="vid1" src="" class="video-js vjs-default-skin" controls preload="auto" width="580" height="360" data-setup='{ "techOrder": ["youtube"], "src": "<?php echo $obj->video_url;?>" }'></video> 

Я не знаю, почему я не в состоянии сделать он работает в первом случае с использованием jquery.

Thnx

+0

$ ('# всплывающих companyPitch') данных ('настройки', JSON). – Omidam81

ответ

0

Проблема заключается в экранирование кавычек в атрибутах так

Если вы хотите, чтобы установить его в качестве самого атрибута

var json = JSON.stringify({"techOrder": ["youtube"], "src": "https://www.youtube.com/watch?v=LKRaXPYSzKY" }); 
var $el = $('<video id="vid1" src="" class="video-js vjs-default-skin" controls preload="auto" width="580" height="360"></video>').attr('data-setup', json); 
$('#popup-companyPitch').html($el); 

Если вы хотите установить его так же, как свойство данных

var json = {"techOrder": ["youtube"], "src": "https://www.youtube.com/watch?v=LKRaXPYSzKY" }; 
var $el = $('<video id="vid1" src="" class="video-js vjs-default-skin" controls preload="auto" width="580" height="360"></video>').data('setup', json); 
$('#popup-companyPitch').html($el); 
+0

Я собирался предложить свойство данных. Хороший звонок. Также по другим причинам, вероятно, лучший способ иметь дело с таким количеством данных, а не с атрибутом. Атрибуты на самом деле не предназначены для этого. – Casey

+0

не работает ... на инспектировать элемент, когда я смотрю ур код создает это: {" techOrder ": [" " YouTube] " " ЦСИ: " https://www.youtube.com/watch?v=LKRaXPYSzKY " } –

+0

Вот как должно выглядеть действительное значение атрибута, так как оно должно ускользать от котировок –

0

Вы можете использовать следующий код. лучше, чтобы добавить большой «данных-» с помощью функции data()

var json = JSON.stringify({"techOrder": ["youtube"], "src": "https://www.youtube.com/watch?v=LKRaXPYSzKY" }); 
video_element= $('<video id="vid1" src="" class="video-js vjs-default-skin" controls preload="auto" width="580" height="360"></video>'); 
    vide_element.attr('data-setup', json); //if you want visible attribute you can use vide_element.attr('data-setup', json) 

$('#popup-companyPitch').append(video_element); 
+0

этот код тоже не работает ... он даже не добавляет атрибут установки в элемент, когда я проверяю элемент проверки в chrome ... –

+0

jquery не добавляет никаких атрибутов, которые вы можете видеть в инспекторе – Omidam81

+0

, если вы хотите видеть атрибут вы можете использовать vide_element.attr ('data-setup', json); – Omidam81