2012-02-13 76 views
-1

我将如何使用$('#flashObj').append();向下面代码中说“append_HERE”的两个区域添加文本?jquery append元素

编辑:如果我把它作为一个字符串存储在一个变量中,想要改变这些值呢?

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>' 
+0

Ugh ??? AHHHHH! [jQuery API](http://api.jquery.com/append) – elclanrs 2012-02-13 22:34:10

回答

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'

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

咦?你为什么要做paramMove减去一个电影元素(顺便说一下,不存在)?另外,为什么当需要更改的值时,您将替换'name'属性中的内容? – Christian 2012-02-13 22:28:49

+0

@ChristianSciberras - 输入时错过了,但是谢谢。现在纠正它,小心删除投票吗? – ShankarSangoli 2012-02-13 22:31:07

+0

更正了:) – ShankarSangoli 2012-02-13 22:34:10

0

这里的append()方法真的不会帮你,因为它会元素只是追加到对象元素。你可能想要使用类似html()函数的东西。

0

我敢肯定有人会纠正我,如果我错了,但我会说你想尝试错误地使用append功能。我用会用附加文字或标记到某个东西的末尾,而不是将它插入到中间。

我不知道你的代码,但我认为一个更好的解决办法是使用jQuery ATTR建立你的元素在你的JavaScript代码()函数$('param').attr('value','the value you need')等等

希望这有助于!

詹姆斯

0

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

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")); 

只需更换“新值放在这里”与你试图插入什么。