[英]jquery .click() event.preventDefault() not working
我正在构建一个可通过将脚本拖放到预设目录中而扩展的Web应用程序。 脚本需要在转到页面之前读取文件头,因此我需要在单击链接时使用.preventDefault()并首先运行一些JScript。 不幸的是我无法通过.preventDefault()
这是我的链接格式:
<a href="path/to/file.php" class="filelink">Some Text</a>
这是我试图用来停止默认操作的jquery:
$( '.filelink' ).click( function( e ) {
e.preventDefault();
//do some other stuff here
});
编辑:
更多信息:
<script>...</script>
在我的页脚中。 这个函数是INSIDE $(document).ready
在$.ajax
调用之后,它建立了这个函数试图监听点击的链接列表。
由于您的链接会动态附加到页面,因此您需要使用document.on()
来捕获单击事件。
将事件侦听器附加到动态内容的语法如下
$(document).on( event, selector, callback );
所以你的点击处理程序将成为:
$(document).on('click','.filelink',function(e){
e.preventDefault();
//code here
return false;
});
我想你错过了$(文件).ready()
请按以下方式更新您的代码:
$(document).ready(function(){
$( '.filelink' ).click( function( e ) {
e.preventDefault();
//do some other stuff here
});
})
是你的代码包围:
$(function(){
//your code here
});
? 要么
$(document).ready(function(){
//your code here
});
? ,因为你应该等到<a></a>
元素准备就绪,然后才能将点击监听器添加到它。 尝试上面的代码或将代码放在</body>
标记之前的html底部或<a></a>
元素之后。 应该工作
编辑:因为您的链接是动态添加的,在添加后立即调用$( '.filelink' ).click()
函数
我遇到了同样的问题,因为我在事件处理程序中更改了window.location.search:
$( '.filelink' ).click( function( e ) {
e.preventDefault();
window.location.search = "something";
});
为了解决我的问题,我使用了window.location.hash
(这是我想要的更多)。
对我来说,问题是Javascript代码中的语法错误。
我将php变量替换为JS变量之一,如下所示,
var myvar = "<?php echo $myvar; ?>";
产生以下结果,
var myvar = "value in "myvar" which is not escaped";
它在我转义变量时起作用了。
请检查代码中是否存在语法错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.