элемент jquery append - PullRequest
       5

элемент jquery append

0 голосов
/ 14 февраля 2012

Как бы я использовал $('#flashObj').append();, чтобы добавить текст к двум областям с надписью "append_HERE" в приведенном ниже коде?

edit: что, если бы я хранил ее в переменной в виде строки и хотел изменить значения таким образом?

var flashLayout = '<div id="flashObj">'+
    '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="200" height="20">'+
        '<param name="movie" value="dbs/js/singlemp3player.swf?file=append_HERE.mp3&autoStart=false&backColor=000000&frontColor=ffffff&songVolume=90" />'+
        '<param name="wmode" value="transparent" />'+
        '<embed wmode="transparent" width="200" height="20" src="dbs/js/singlemp3player.swf?file=append_HERE.mp3&autoStart=false&backColor=000000&frontColor=ffffff&songVolume=90" type="application/x-shockwave-flash" />'+
    '</object></div>'

Ответы [ 7 ]

2 голосов
/ 14 февраля 2012

Вы не используете append() метод для манипулирования значениями атрибута. Попробуйте использовать метод attr, чтобы получить и установить значение атрибута.

Попробуйте это.

var $embed = $('#flashObj embed');
var $paramMovie = $('#flashObj param[name=movie]');
$embed.attr('src', $embed.attr('src')
                   .replace('append_HERE', 'yourTextGoesHere'));
$paramMovie.attr('value', $paramMovie.attr('value')
                         .replace('append_HERE', 'yourTextGoesHere'));
0 голосов
/ 14 февраля 2012

Вы бы не использовали .append () для этого. Вы можете сделать это следующим образом (не самый элегантный код, но должен работать просто отлично):

var param = $("#flashObj").children("object").children("param").filter("[name='movie']")
var embed = $("#flashObj").children("object").children("embed")

//Change the value on the <param>
param.val(param.val().replace("append_HERE", "New Value Goes Here"));

//Change the value on the <embed>
embed.attr("src", embed.attr("src").replace("append_HERE", "New Value Goes Here"));

Просто замените "New Value Goes Here" на то, что вы пытаетесь вставить.

0 голосов
/ 14 февраля 2012

append () не поможет вам заменить текст, плюс вся концепция не будет работать в любом случае. Вы должны удалить объект и внедрить из DOM, воссоздать их с новыми значениями и ввести их обратно (в этом случае может помочь append ())

0 голосов
/ 14 февраля 2012

Javascript (и jQuery) работают с узлами DOM (элементы как объекты), а не с текстом.

Вы можете получить этот код в виде текста HTML и заменить обычную строку следующим образом:

var f = $('#flashObj');
f.html( f.html().replace('append_HERE', 'append_HERE_the_new_stuff') );

Или, что еще лучше, вам следует избегать игры с HTML в качестве текста и вместо этого изменять сам атрибут:

var f = $('#flashObj param:first');
f.attr('value', f.attr('value').replace('append_HERE', 'append_HERE_the_new_stuff') );

var f = $('#flashObj embed');
f.attr('src', f.attr('src').replace('append_HERE', 'append_HERE_the_new_stuff') );

PS : Вы, вероятно, захотите выполнить глобальную замену с использованием регулярного выражения, поскольку "bar bar".replace("bar", "foo") возвращает 'foo bar'.

0 голосов
/ 14 февраля 2012

Я уверен, что кто-то исправит меня, если я ошибаюсь, но я бы сказал, что вы пытаетесь использовать функцию добавления неправильно.Я бы использовал, чтобы добавлять текст или разметку к концу чего-либо, а не вставлять его в середину.

Я не уверен в вашем коде, но думаю, что лучшим решением будетсоздать свой элемент в своем коде javascript, используя функцию attr () jQuery $('param').attr('value','the value you need') и т.д ...

Надеюсь, это поможет!

0 голосов
/ 14 февраля 2012

Метод append () здесь действительно не поможет, так как он просто добавляет элемент к элементу object.Вы, вероятно, хотите использовать что-то вроде функции html () .

0 голосов
/ 14 февраля 2012

вы бы этого не делали ...

Приложение не предназначено для этой цели ... посмотрите на этот пост:

object, param, jquery

это может помочь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...