jquery .click()event.preventDefault()不起作用

时间:2015-01-09 23:12:52

标签: javascript jquery

我正在构建一个可通过将脚本拖放到预设目录中而扩展的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调用构建此功能正在尝试侦听点击次数的链接列表。

5 个答案:

答案 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";

当我对变量进行转义时,它就起作用了。

请检查代码中是否存在语法错误。