Javascript jquery.click()事件.preventDefault()不工作
我正在构建一个web应用程序,它可以通过将脚本放入预设目录进行扩展。脚本在进入页面之前需要读取文件头,因此我需要在单击链接时使用.preventDefault(),并首先运行一些JScript。不幸的是,我无法通过.preventDefault() 以下是我的链接格式:Javascript jquery.click()事件.preventDefault()不工作,javascript,jquery,Javascript,Jquery,我正在构建一个web应用程序,它可以通过将脚本放入预设目录进行扩展。脚本在进入页面之前需要读取文件头,因此我需要在单击链接时使用.preventDefault(),并首先运行一些JScript。不幸的是,我无法通过.preventDefault() 以下是我的链接格式: <a href="path/to/file.php" class="filelink">Some Text</a> 编辑: 更多信息: …在我的页脚中。 此函数位于$(文档)中。在执行$调用后,准备好了
<a href="path/to/file.php" class="filelink">Some Text</a>
编辑:
更多信息:
…
在我的页脚中。
此函数位于
$(文档)中。在执行$调用后,准备好了。ajax
调用将生成此函数尝试侦听的链接列表。您的代码周围是否有:
$(function(){
//your code here
});
??或
,因为您应该等到
元素准备就绪后再将单击侦听器添加到其中。请尝试上面的代码,或将代码放在html底部
标记的正前方或
元素的正后方。这应该行得通
编辑:由于您的链接是动态添加的,请在添加链接后立即调用$('.filelink')。单击()
函数
$(文档).ready()
请按以下方式更新您的代码:
$(document).ready(function(){
$( '.filelink' ).click( function( e ) {
e.preventDefault();
//do some other stuff here
});
})
由于链接是动态附加到页面的,因此需要使用document.on()
捕获单击事件
将事件侦听器附加到动态内容的语法如下
$(文档).on(事件、选择器、回调)代码>
因此,您的单击处理程序将变成:
$(document).on('click','.filelink',function(e){
e.preventDefault();
//code here
return false;
});
我也有同样的问题,因为我更改了事件处理程序中的window.location.search:
$( '.filelink' ).click( function( e ) {
e.preventDefault();
window.location.search = "something";
});
为了解决我的问题,我使用了window.location.hash
(这正是我想要的)。对我来说,问题是Javascript代码中的语法错误
我用一个php变量替换了一个JS变量,如下所示
var myvar=”“代码>
产生了以下结果
var myvar=“myvar”中未转义的值”代码>
当我转义变量时,它起作用了
请检查代码中是否有语法错误。您的jquery语句中缺少一个结束语)
。由于语法错误,click事件从未被触发。当您发表评论时,lol实际上正在编辑它。我只是在这里输入的时候打错了。它现在看起来和myscript中的完全一样,但没有启动。我回滚了编辑,因为还不清楚拼写错误是有问题的还是在编辑时的实际代码中。如前所述,使用固定的打字错误,我看不出您所描述的问题的原因。…
位于何处?重复的(无法投票关闭,其他人请执行(@KevinB))。您不必等到dom准备就绪后再添加事件侦听器,您只需要确保代码在元素存在后执行。@SpencerWieczorek Kevin说脚本必须在元素之后执行,这是正确的,并且不必在文档中。Ready是因为创建clickhandler时元素不存在,即在加载dom时。jQuery不侦听选择器列表中的新元素,这将非常低效,并且会在具有动态内容的页面上崩溃。返回false
实际上是不必要的。preventDefault()应该足够了。@RichardN:我建议阅读以下内容:“事件处理程序仅绑定到当前选定的元素;它们必须在代码调用.on()
”时存在于页面上@r3wt:您是对的<代码>返回false
相当于调用event.preventDefault();event.stopPropagation()
@amenthes要添加到r3wt的备注中,实际上返回false可以防止在地址栏上显示#hashtag超链接,这有时是完全不需要的。对于这种情况,可能没有必要,但只需在此处添加两美分:)
$(document).on('click','.filelink',function(e){
e.preventDefault();
//code here
return false;
});
$( '.filelink' ).click( function( e ) {
e.preventDefault();
window.location.search = "something";
});