0
<input id="img" type="file" name="img" accept="image/*">

这是JQuery代码:

$('#img').change(function(){

    if($('#this').val() === '') { 

        $("#subm").remove();

    }  else {

         $('<button id="subm" type="submit">Press</button>').insertAfter('#advice');

   }

});

我正在尝试检查是否input file为空,如果为空,是否存在一个名为 的按钮subm,我将其删除,但如果input file有文件,则创建该底部。问题是,如果有一个subm按钮,因为我选择了文件,并且在我更改了之后input,让它为空,JQuery不会删除它。

JQuery如果 aninput file为空,如何删除由 创建的按钮?

谢谢提前!

4

4 回答 4

3

$('#this')应该是$(this)$('#this')匹配一个元素id=this

于 2013-01-21T14:04:38.490 回答
3

除非您实际上有一个 id 为“this”的元素,否则您可能打算使用this关键字:

$('#img').change(function(){
    // this will be the #img that fired the change event
    if($(this).val() === '') {
        $("#subm").remove();
    }  else {
         $('<button id="subm" type="submit">Press</button>').insertAfter('#advice');
    }
});
于 2013-01-21T14:05:01.947 回答
0

用这个:

<input id="img" type="file" name="img" accept="image/*">
<button id="subm" type="submit">Press</button>
$('#img').change(function(){
    if(!this.value) { 
        $("#subm").hide();
    } else {
        $("#subm").show();
    }
}).change(); // trigger event to init
于 2013-01-21T14:07:29.510 回答
0

需要注意的一件事是, 的值this也可以根据它与 javascript 和 jQuery 一起使用的上下文而改变。您现在应该没问题,但是在更复杂的情况下,您可能会遇到问题

这种情况的最佳实践是创建另一个变量,通常self立即调用。

$('#img').change(function () {
    var self = this;
    // self will now ALWAYS be the #img that fired the change event.
    if ($(self).val() === '') {
        $("#subm").hide();
    } else {
        $("#subm").show();
    }
});

如果您使用另一个较低的功能,则会出现此问题,那么this现在将引用this较低的功能。每当你进入一个新函数时定义一个新变量,self这样你就可以始终锁定this它。(并且不要忘记让这些变量名是唯一的。)

于 2013-01-21T14:10:25.167 回答