我的目标是通过点击删除图片。
我有这个js:
$('.imageSelected').on('click', function (event)
{
console.log('ok');
$this.remove();
});
这个html:
<li class="imageSelected">
<a href="#">
<div class="img-container" style="background-image:url({{ asset('bundles/mybundle/images/neige.jpg') }});">
<div></div>
</div>
</a>
</li>
但它永远不会进入我的js,知道为什么?
答案 0 :(得分:2)
您应该使用$(this)
或this
来获取当前点击的项目。
$(function(){
$('.imageSelected').on('click', function (event){
$(this).remove();
// or this.remove();
});
});
Here是一个工作样本。
编写jQuery代码时,this
或$(this)
变量的值将根据代码的上下文/范围而变化。因此,将它分配给局部变量并将其用于更多内容总是一个好主意。
实施例
$(function(){
$('.imageSelected').on('click', function (event){
var _this=$(this);
//Use _this as needed
_this.css( { color : 'red' });
$.post("UrlToDelete", { id :"someIdFromCurrentElement",function(res) {
_this.fadeOut(100,function(){
_this.remove();
});
});
});
});
答案 1 :(得分:2)
如此处定义的那样,$this
是一个未定义的新变量。您必须使用this
转到当前元素。所以,如果你想在它们上使用jQuery函数,你可以像$(this)
一样包装它。
您的解决方案是:
$('.imageSelected').on('click', function(event) {
console.log('ok');
$(this).remove();
});
答案 2 :(得分:1)
我认为你的元素是动态生成的。您可能需要事件委派。尝试以下。
scheme=file
答案 3 :(得分:0)
鉴于您的代码存在javascript错误,导致您无法显示警报或进一步运行jquery。但是,代码中的问题是 $ this ,而在此处使用它的正确形式是 $(this),它可以解决问题。我在小提琴中添加了修改后的代码,所以在这里看看你的代码。
*https://jsfiddle.net/raghucse2010/c4jjzhvw/7/*