jquery代码适用于控制台,但不适用于脚本标记或附加的js文件

时间:2015-07-28 08:14:27

标签: jquery click

$(".filter-close").click(function(){
    $(this).parent().remove();

});

此代码段在控制台中有效,但在脚本代码和附加的js文件中均无效。

3 个答案:

答案 0 :(得分:7)

在调用事件处理程序时等待DOM准备就绪:

jQuery(function($) { // this does the trick and also makes sure jQuery is not conflicting with another library 
    $(".filter-close").click(function(){
        $(this).parent().remove();
    });
});
  

使用其他JavaScript库时,我们可能希望调用$ .noConflict()来避免名称空间困难。调用此函数时,$快捷方式不再可用,每次我们通常写$时都会强制我们编写jQuery。 但是,传递给.ready()方法的处理程序可以接受一个参数,该参数传递给全局jQuery对象。这意味着我们可以在.ready()处理程序的上下文中重命名对象,而不会影响其他代码

Documentation for .ready() method

答案 1 :(得分:2)

附加事件处理程序时,可能是DOM中没有出现的问题。

尝试这样的事情:

$( document ).ready(function() {
  // Handler for .ready() called.

    $(".filter-close").click(function(){
        $(this).parent().remove();

    });

});

$ .ready()(下面的链接)确保它在呈现DOM之前不会尝试调用代码来添加处理程序,类似于OnLoad。

Documentation for JQuery .ready() method

还存在潜在的库冲突(例如,请参阅@ D4V1D答案),但我们无法确定在不知道控制台中出现的错误消息(如果有)以及理想情况下更多地了解周围代码。

如果F12什么都不做,请点击F12并查看控制台和/或网络面板中的内容,或google“BrowserName dev console”。

但是,正如所说它在控制台中工作,所以我假设你的意思是开发控制台,它实际上只是一个计时问题,所以不太可能发生冲突(尽管页面上其他地方仍可能出现语法错误)

答案 2 :(得分:-1)

在调用此函数时,DOM中可能没有filter-close类的元素。我想你是动态地向DOM添加元素。你呢?