簡體   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