如何更正此jquery追加

时间:2013-06-04 01:36:55

标签: javascript jquery append

在另一个问题中,有人转向我使用这种编写jQuery .append()的方法,但我似乎无法让它工作。控制台返回错误,“意外的字符串”,但我无法弄清楚我做错了什么。

不工作:

$(".create-form").submit(function(event){
    var title = $("#story-name").val();
    copy = $("#story-content").val();
    $(".storyboard").append(
        $("<li/>", className: "story").html(
            $("<span/>", className: "story-count") +
            $("<span/>", className: "story-title-input", content: title)));
});

我还尝试使用逗号代替第一个附加元素上的“+”和.append()而不是.html()。我可以通过写出所有的HTML来使它工作,但这感觉就像一个更干净的方法。

3 个答案:

答案 0 :(得分:4)

肯定你缺少{}来进行json初始化。

$(".create-form").submit(function(event){
    var title = $("#story-name").val();
    copy = $("#story-content").val();
    $(".storyboard").append(
        $("<li/>", { className: "story" }).html(
            $("<span/>", { className: "story-count" }) +
            $("<span/>", { className: "story-title-input", content: title } )));
});

然后我会替换这个

$("<li/>", { className: "story" }).html(
   $("<span/>", { className: "story-count" }) +
   $("<span/>", { className: "story-title-input", content: title } )));

通过

$("<li/>", { className: "story" })
   .append($("<span/>", { "class": "story-count" }))
   .append($("<span/>", { "class": "story-title-input", text: title } ));

答案 1 :(得分:4)

此代码无效:

, className: 'story'

您可能正在寻找的是一个对象文字,尝试将参数包装到$('...') {}中,如下所示:

$(".create-form").submit(function(event){
    var title = $("#story-name").val();
    copy = $("#story-content").val();
    $(".storyboard").append(
        $("<li/>", {className: "story"}).html(
            $("<span/>", {className: "story-count"}) +
            $("<span/>", {className: "story-title-input", content: title})));
});

答案 2 :(得分:1)

我认为这更具可读性,也是一种更好的方法:

$('.create-form').on('submit', function(e){
    e.preventDefault();
    var title = $('#story-name').val(),
        copy  = $("#story-content").val(),
        li    = $('<li />',   {'class': 'story'}),
        span1 = $('<span />', {'class': 'story-count'}),
        span2 = $('<span />', {'class': 'story-title-input', text: title});

    $(".storyboard").append( li.append(span1, span2) );
});

您需要为元素属性使用对象