为什么我的选择器找不到我的班级?

时间:2015-12-29 16:25:10

标签: jquery

我的目标是通过点击删除图片。

我有这个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,知道为什么?

4 个答案:

答案 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/*