$(".filter-close").click(function(){
$(this).parent().remove();
});
此代码段在控制台中有效,但在脚本代码和附加的js文件中均无效。
答案 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()处理程序的上下文中重命名对象,而不会影响其他代码
答案 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添加元素。你呢?