使用JQuery根据条件删除元素
Deleting elements based on condition with JQuery
<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
不会删除它。
如果input file
为空,我如何删除JQuery
创建的按钮?
谢谢的!
$('#this')
应该是$(this)
, $('#this')
与id=this
匹配
除非您确实有一个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');
}
});
使用
<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
需要注意的一点是,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
是什么。(别忘了变量名要唯一)
相关文章:
- 从组件状态的数组中删除元素
- 从数组中删除元素的最佳方法是:javascript/jquery
- 正则表达式条件来删除元素
- 使用javascript删除元素时出现的问题
- 当会话存储阵列中存在大量元素时,如何从中删除元素
- 从角度数组中删除元素
- AngularJs localStorage在循环中删除元素
- 在使用jquery插入之前删除元素
- 如何删除元素列表中的类并添加到另一个元素 Jquery.
- 更新分组条形图(转换或删除元素组)
- 向下滚动后如何用同一类逐个删除元素
- 如何防止 jQuery 事件在删除元素时冒泡
- 从jQuery对象中删除元素
- 如何删除元素的结束标记,添加一些文本,然后重新添加标记
- 从画布中删除元素
- 如何解析html以删除元素并只返回其位置的标题
- 使用 V8 从密集数组中删除元素的最佳方法是什么
- 如何使用jquery删除元素
- 根据成员属性从数组中删除元素
- 从中删除元素'的父元素,并将其附加到其他元素