jquery追加元素

时间:2012-02-13 22:19:59

标签: javascript jquery html5

如何使用$('#flashObj').append();将文字添加到下面代码中“append_HERE”的两个区域?

编辑:如果我将它作为字符串存储在变量中并希望以这种方式更改值,该怎么办?

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 个答案:

答案 0 :(得分:2)

您不使用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'));

答案 1 :(得分:0)

你不会这样做......

追加不是为了这个目的...看看这篇文章:

object, param, jquery

它可能会有所帮助

答案 2 :(得分:0)

这里的append()方法确实无法帮助你,因为它只会向对象元素追加一个元素。您可能希望使用类似html()函数的内容。

答案 3 :(得分:0)

我确定如果我错了会有人纠正我,但我会说你试图错误地使用追加功能。我使用追加文本或标记到某些内容的末尾,而不是插入到中间。

我不确定您的代码,但我认为更好的解决方案是使用jQuery attr()函数$('param').attr('value','the value you need')等在javascript代码中构建元素...

希望这有帮助!

詹姆斯

答案 4 :(得分:0)

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'

答案 5 :(得分:0)

append()不会帮助你替换文本,加上整个概念无论如何都不会起作用。你应该从DOM中删除对象和嵌入,用你的新值重新创建它们并再次注入它们(在这种情况下append()可以帮助)

答案 6 :(得分:0)

你不会使用.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”替换为您要插入的内容。