繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM