Jquery Изменить атрибут val перед добавлением

У меня есть поле textarea, в котором пользователи могут вводить код для встраивания YouTube, а затем при отправке я беру значение textarea и добавляю его в тело. Я хочу добавить ?id=123 в конец src в коде встраивания, прежде чем добавлять его в тело. Как проще всего это сделать. Добавленное значение должно быть кодом iframe с измененным src

Код для вставки выглядит так

<iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/aemXgP-2xyg" frameborder="0" allowfullscreen></iframe>

ОБНОВЛЕННЫЙ КОД

                var value = $('textarea').val();
                var wmode = '?id=123';
                var value1 = $(value).attr("src", $(value).attr("src") + wmode);                 
                var code = $('<div class="abs embed" id="embedId">' + value1 + '<span class="move"></span></div>');                 
                $(code).appendTo(...

person Hussein    schedule 06.02.2011    source источник


Ответы (4)


var iframe = $($("textarea").val());
iframe.attr("src", function(i,v) { return v + '?id=123'; }).appendTo("body");

(обновлено решением Шиме Видаса)

редактировать: если у вас есть firebug, на этой странице вы можете скопировать/вставить код iframe в текстовую область и запустить этот код в консоли:

var lol = $("textarea").val()
var iframe = $(lol);
var test = iframe.attr("src", function(i,v) { return v + '?id=123'; })
test.appendTo("body");

И видео YouTube должно быть вставлено в конце страницы.

изменить 2: Чтобы сделать то, что вы хотите в своем обновлении, попробуйте следующее:

var value = $('textarea').val(),
wmode = '?wmode=transparent',
value1 = $(value).attr("src", $(value).attr("src") + wmode),
span = $('<span class="move"></span>'),
div = $('<div class="abs embed" id="embedId"></div>');
div.append(value1).append(span).appendTo("body");
person Robin    schedule 06.02.2011
comment
Я хочу добавить весь код iframe, включая измененный атрибут src, а не только src. - person Hussein; 06.02.2011
comment
@alex Весь iframe будет добавлен к BODY. Использование attr() просто изменяет атрибут src - person Šime Vidas; 06.02.2011
comment
Все методы jQuery являются цепочечными, поэтому iframe.attr(blablabla).appendTo() добавит iframe. - person Robin; 06.02.2011
comment
Я не хочу добавлять сразу. Если вы хотите установить результат var iframe с измененным src на var newvar, то используйте $(newvar).appendTo... Но это не работает. var newvar = iframe.attr(src, function(i,v) { return v + '?id=123'; }); $(newvar).appendTo('тело'); - person Hussein; 06.02.2011
comment
Во-первых, iframe.attr() возвращает объект jquery, поэтому вам не нужно делать $(newvar).appendTo, вы можете просто сделать newvar.appendTo. Но все равно должно работать. Я только что попробовал в firebug на этой странице stackoverflow, и это работает... - person Robin; 06.02.2011
comment
да, он возвращает объект. Я разместил код, с которым я работаю. См. обновленный код выше. - person Hussein; 06.02.2011
comment
Проблема в вашем коде заключается в том, что вы объединяете value1, как если бы это была строка, но это объект jQuery. - person Robin; 06.02.2011
comment
Это работает, я действительно объединял объект jquery в качестве переменной. Спасибо за усилия. - person Hussein; 06.02.2011

Все опубликованные решения хороши и работают, но я бы предпочел просто вырезать src, если он существует, а затем посмотреть, действительно ли он является действительным источником видео. Если вы позволите им вводить html, вы сильно рискуете!

Посмотрите на Facebook, вы можете ввести ссылку, и он узнает, что это такое, и для пользователя гораздо приятнее, если он может просто перейти по ссылке на YouTube, а не искать весь код для встраивания! Безопасность прежде всего!

person Luke    schedule 06.02.2011

$(ta.value).attr('src', function(i,v) { return v + s; }).appendTo('body'); 

... где s — это строка, которую вы хотите добавить к атрибуту src
… и ts — элемент TEXTAREA

person Šime Vidas    schedule 06.02.2011

person    schedule
comment
Лучше: appCode.attr('src', function(i,v) { return v + '?id=123'; }) - person Šime Vidas; 06.02.2011