我正在尝试从列表中获取输入框的值。我可以让它与html一起工作,如下所示。
<div id='numbs'>
    <input id='1'>enter value
    <input id='2'>enter value
</div>但是如果输入在列表中,我就不能让它工作。
这是我的代码。谢谢你的帮助。我是个新手,所以如果有什么逻辑问题,请让我知道。
var lastl = parseInt($("input:last").attr('id'));
$("input").live("click", function() {
    if (this.id == lastl && ($(this).prev('input').attr('value') > 0)) {
        lastl = lastl + 1;
        $('#numbs').append('<input id=' + (lastl) + '> enter value');
   }
});jsfiddle
编辑:我想能够使我的html在这种格式
<ul id='numbs'>
    <li><input id='1'>enter value</li>
    <li><input id='2'>enter value</li>
</ul>发布于 2012-03-07 10:08:28
当他们单击列表中的最后一个<input>时,看起来您只是在尝试添加新的‘re。
有几件事需要注意:
on而不是live或delegate,如果您必须使用较旧的jQuery,那么优先使用delegate而不是单击事件可能希望使用焦点事件而不是单击事件。有些人知道如何使用键盘,有些人必须使用键盘;此外,焦点似乎更适合您的意图。id属性都有问题,因此最好不要使用它们。id,您可以根据<input>元素的总数计算出下一项。我会使用类似这样的东西:
$('#numbs').on('focus', 'input', function() {
    var $inputs = $('#numbs').find('input');
    if($inputs.index(this) == $inputs.length - 1) {
        var input = '<input id="input-'
                  + $inputs.length
                  + '">';
        $('#numbs').append('<li>' + input + '</li>');
    }
});当它们命中<ul>中的最后一个<input>时,您希望采取行动,因此使用index准确地说明这一点
if($inputs.index(this) == $inputs.length - 1)演示:http://jsfiddle.net/ambiguous/L2MDa/
发布于 2012-03-07 09:58:46
这样行得通吗?
var numbs = $('#numbs').on('focusin', 'input:text', function (e) {
    var lastInput = numbs.find('input:text:last')[0];
    if (this === lastInput) {
        numbs.append('<li><input /> enter value</li>');
    }
});此外,我将您的事件从单击切换到焦点,因为可能有人正在切换您的表单域。
发布于 2012-03-07 10:02:08
您甚至可以在不对输入进行编号的情况下执行此操作:
<div id='numbs'>
    <li><input>enter value</li>
    <li><input>enter value</li>
</div>$("#numbs").on("focus", 'input', function() {
    var inputs = $('input');
    if (inputs.index(this) == inputs.length-1 && inputs.eq(inputs.length-2).val() > 0 ) {
        $('#numbs').append('<li><input>enter value</li>');
    }
});示例:http://jsfiddle.net/jtbowden/k4gMJ/
https://stackoverflow.com/questions/9594653
复制相似问题