我正在构建一个可通过将脚本拖放到预设目录中而扩展的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>
在我的页脚中。
此功能位于$(document).ready
之后,$.ajax
调用构建此功能正在尝试侦听点击次数的链接列表。
答案 0 :(得分:65)
由于您的链接会动态附加到页面,因此您需要使用document.on()
来捕获点击事件。
将事件侦听器附加到动态内容的语法如下
$(document).on( event, selector, callback );
因此您的点击处理程序将变为:
$(document).on('click','.filelink',function(e){
e.preventDefault();
//code here
return false;
});
答案 1 :(得分:3)
我想你错过了 $(文件)。就绪()
请按以下步骤更新您的代码:
$(document).ready(function(){
$( '.filelink' ).click( function( e ) {
e.preventDefault();
//do some other stuff here
});
})
答案 2 :(得分:1)
是您的代码:
$(function(){
//your code here
});
?或
$(document).ready(function(){
//your code here
});
? ,因为你应该等到<a></a>
元素准备就绪,然后才能将点击监听器添加到它。尝试上面的代码,或者将代码放在</body>
标记之前或h <a></a>
元素之后的html底部。应该工作
编辑,因为您的链接会在添加后立即动态添加<{1}}功能
答案 3 :(得分:0)
我遇到了同样的问题,因为我在事件处理程序中更改了window.location.search:
$( '.filelink' ).click( function( e ) {
e.preventDefault();
window.location.search = "something";
});
为了解决我的问题,我使用了window.location.hash
(这是我想要的更多)。
答案 4 :(得分:0)
对我来说,问题是Javascript代码中的语法错误。
我将php变量替换为如下所示的JS变量之一,
var myvar = "<?php echo $myvar; ?>";
产生以下结果,
var myvar = "value in "myvar" which is not escaped";
当我对变量进行转义时,它就起作用了。
请检查代码中是否存在语法错误。