Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery.click()事件.preventDefault()不工作_Javascript_Jquery - Fatal编程技术网

Javascript jquery.click()事件.preventDefault()不工作

Javascript jquery.click()事件.preventDefault()不工作,javascript,jquery,Javascript,Jquery,我正在构建一个web应用程序,它可以通过将脚本放入预设目录进行扩展。脚本在进入页面之前需要读取文件头,因此我需要在单击链接时使用.preventDefault(),并首先运行一些JScript。不幸的是,我无法通过.preventDefault() 以下是我的链接格式: <a href="path/to/file.php" class="filelink">Some Text</a> 编辑: 更多信息: …在我的页脚中。 此函数位于$(文档)中。在执行$调用后,准备好了

我正在构建一个web应用程序,它可以通过将脚本放入预设目录进行扩展。脚本在进入页面之前需要读取文件头,因此我需要在单击链接时使用.preventDefault(),并首先运行一些JScript。不幸的是,我无法通过.preventDefault()

以下是我的链接格式:

<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";
 });