删除最近的输入

时间:2012-04-26 07:20:28

标签: javascript jquery html input

好的,我有输入对象,当它被更改时,它会添加另一个..
当你点击它时还有删除(izdzēst)链接,它应该删除最后一个输入字段.. 怎么样? (删除功能为dzest

我想问题出在$(this)

<input name="userfile[]" type="file" size=40 />
&nbsp;<a href="#" onclick="dzest();return false" class="link" name="dzest" style="font-weight:normal; display:none;">Izdzēst</a><br /> 

<script>
function dzest(){
     $(this).closest('input').remove();
}
$("input[type=file]").change(function() {
    $('<input name="userfile[]" type="file" />').appendTo('body');
    $('<a href="#" onclick="dzest();return false" class="link" name="dzest" style="font-weight:normal; display:inline;">Izdzēst</a><br/>').appendTo('body');
    $('.link').css('display','inline');

});
</script>

2 个答案:

答案 0 :(得分:0)

尝试这样做而失去onclick属性。

$('a[name=dzest]').on('click', function() {
    $(this).closest('input').remove();
});

或者在删除中添加ID以简化选择器。

答案 1 :(得分:0)

    代码中的
  • this引用window对象而不是锚。
  • closest表示最接近的元素input永远不能成为父元素,因此您可能需要prev()

固定代码

$('<a href="#" onclick="dzest(this);return false" class="link" name="dzest" style="font-weight:normal; display:inline;">Izdzēst</a><br/>').appendTo('body');
<a href="#" onclick="dzest(this);return false"

功能:

function dzest(obj){
     $(obj).prev('input').remove();
}

您还可以使用不显眼的事件处理程序&amp;委托活动。

$('body').on('click', '.link', function(){
        $(this).prev('input').remove();
    });