【问题标题】:Dynamically appending text lines动态附加文本行
【发布时间】:2011-06-01 18:04:57
【问题描述】:

代码的目标是在每次聚焦最后一行时创建一个新的输入行,直到达到一定数量的行。 我收到了this solution,效果很好:

$(function() {
    $("#qc>div:last-of-type>input").live('focus', function() {
        $(this).parent().after($(this).parent().clone().attr('id', 'ansInput' + $('#qc>div').length).find('input').val('').end());
    });
});

但我也想每次换行前的文字,所以clone不会删掉它

我修改它以编写一个预先准备好的 HTML 行,但它不起作用:

function questionsForm() {
    $("#qc>div:last-of-type>input").live('focus', function() {

        lineNum = $('#qc>div').length
        newLine = ("<div id='ansInput{0}'>Answer {0}: <input type='text' name='ans{0}' /></div><!--ans1-->").format(lineNum);

        if ($('#qc>div').length <= 4) { 
            $(this).parent().after(newLine);
        }
    });
}

.format 方法是预定义的)

我想了解为什么我的代码不起作用,以及如何更改它,但不是完全不同的解决方案(当然,除非我的代码有一些基本错误..)

【问题讨论】:

  • newLine 是你所期望的(如果你调试它)?函数是否在输入的焦点上执行?在某些浏览器中,焦点和实时交互出现了奇怪的现象。
  • 由于某种原因,当.after中存在变量或字符串时,函数不会执行,chrome调试器没有给出错误
  • 也许 newLine 中有一些无效的东西?尝试使用一个非常基本的 html 字符串,看看是否可行。
  • @aepheus,不……变量可能存在闭包问题吗?
  • $(this) 和 $(this).parent() 是您期望的元素吗?使用 .html() 查看它们是什么。

标签: jquery forms dynamic live


【解决方案1】:

lineNum = $('#qc&gt;div').length 后面缺少分号

为什么是 questionsForm() 函数中的代码?
你可以把它放在 jquery 就绪函数 $(function(){ ... });

还有你的格式化函数是什么样的?

【讨论】:

  • (1)thanx 用于分号,但没有变化 (2) 我的代码中已经有一个 $(function(){}) 所以我把 questionsForm 放在那里 (3) 格式在其他部分工作正常相同的代码,我试图删除它但没有任何改变..
  • 您何时/在哪里调用 questionsForm()?
  • 当我使用你的代码时,通过克隆,它可以工作!只有当我将其更改为使用 HTML 行时,它才会停止工作。这是包含.format$(function的代码:jsfiddle.net/ilyaD/x5fqf
  • 这真的很尴尬.. :) 与我发布的代码无关的小错误太多了,我的代码运行良好。我应该删除这个问题吗..?
猜你喜欢
  • 1970-01-01
  • 2020-01-20
  • 1970-01-01
  • 2014-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-20
相关资源
最近更新 更多