修改html的子集并使用jquery附加它

时间:2012-08-31 11:38:45

标签: javascript jquery

我将尝试用简化版的代码来解释我的问题,我将遗漏ajax的东西。

我想要做的是通过ajax检索表单修改一些值并附加它。这应该很简单,但我不能让它发挥作用。

我的代码是......

    <html>
<head>
    <title>Test Jquery</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            var str = "<div><form><textarea></textarea></form></div>"
            $('a#action').on('click',function(e){
                e.preventDefault();
                var result = str;
                var test = $("textarea",result).html("Hello world");

                console.log(test);
                console.log(result);
                $(".sections").append(result);
            });
        });
    </script>​​​​​​
</head>
<body>
<div id="content">
    <a href="#" id="action">go action</a>
<div class="sections">

</div>
</div>
</body>
</html>#

变量str应该模拟从服务器下载的表单... 点击我想改变

  

textarea

并插入"Hello World" ...

我希望看到我的str变量被修改并附加到div ...

部分

我可以修改子集中的textarea

$("textarea",result).html("Hello world");

但我不知道如何将其反映到整个结果......

就像我说这是一个微不足道的抽象,所以str可以有所不同......

2 个答案:

答案 0 :(得分:4)

尝试以下方法:

var str = "<div><form><textarea></textarea></form></div>";
$('a#action').on('click',function(e){
  e.preventDefault();
  var result = str;
  var $ajaxForm = $(str);
  $("textarea", $ajaxForm).val("Hello world");
  $ajaxForm.appendTo($(".sections"));
});​

<强> DEMO

请注意,$("textarea",result).html("Hello world")在您的示例中不起作用,因为result只是一个字符串;它需要是DOM元素或jQuery对象:

  

jQuery(selector [,context])

     

selector - 包含选择器表达式

的字符串      

上下文 - 一个DOM   要用作上下文的元素,文档或jQuery

答案 1 :(得分:0)

您需要先将结果附加到DOM。

然后尝试

form.find("textarea").val("Hello world");