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