【问题标题】:jquery append elementjquery追加元素
【发布时间】:2012-03-05 08:23:48
【问题描述】:

如何使用$('#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>'

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

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

【讨论】:

  • 嗯?你为什么要做 paramMove 减去一个电影元素(顺便说一句,它不存在)?另外,你为什么要替换 name 属性中的东西,而它是需要更改的值?
  • @ChristianSciberras - 打字时错过了,但谢谢。现在更正了,想删除否决票吗?
【解决方案2】:

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'

【讨论】:

    【解决方案3】:

    你不会那样做的......

    append 不是为了那个目的......看看这篇文章:

    object, param, jquery

    可能会有帮助

    【讨论】:

      【解决方案4】:

      这里的 append() 方法对你没有帮助,因为它只是将一个元素附加到对象元素上。您可能想使用类似html() 的函数。

      【讨论】:

        【解决方案5】:

        如果我错了,我相信有人会纠正我,但我会说你试图错误地使用 append 函数。我会使用 append 文本或标记到某物的末尾,而不是将其插入到中间。

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

        希望这会有所帮助!

        詹姆斯

        【讨论】:

          【解决方案6】:

          append() 不会帮助您替换文本,而且整个概念无论如何都行不通。您应该从 DOM 中删除对象并嵌入,使用新值重新创建它们并再次注入它们(append() 在这种情况下会有所帮助)

          【讨论】:

            【解决方案7】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2012-05-12
              • 2013-02-25
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-03-18
              相关资源
              最近更新 更多