2015-07-28 44 views
5
$(".filter-close").click(function(){ 
    $(this).parent().remove(); 

}); 

此代碼段在控制檯中工作,但既不在腳本標記中,也不在附加的js文件中。jquery代碼在控制檯上工作,但不在腳本標記或附加的js文件中

+0

請至少複製粘貼+的頁面的代碼你使用它,然後單擊F12以查看是否有任何dev控制檯中的錯誤。 –

+0

在腳本標記或附加的js文件中運行時會出現什麼錯誤? – D4V1D

+1

愚蠢的我,但爲什麼這個問題得到兩個upvotes ??? –

回答

7

等待DOM調用事件處理函數時,要準備好:

jQuery(function($) { // this does the trick and also makes sure jQuery is not conflicting with another library 
    $(".filter-close").click(function(){ 
     $(this).parent().remove(); 
    }); 
}); 

在使用其他JavaScript庫,我們不妨致電$ .noConflict(),以避免命名空間的困難。當這個函數被調用時,$快捷方式不再可用,迫使我們每次通常寫$都寫jQuery。 但是,傳遞給.ready()方法的處理程序可以接受一個參數,該參數傳遞給全局jQuery對象。這意味着我們可以在不影響其它代碼

Documentation for .ready() method我們。就緒()處理的範圍內對象重命名爲

+0

因爲OP表示代碼在控制檯中工作,所以我們可以假設'$'已經指向jQuery,但這仍然是很好的信息 –

+1

@ A.Wolff:當然,我只想指出其他答案沒有提到:) – D4V1D

-1

也許元素filter-close在您調用此函數時不存在於DOM中。我想你正在向DOM動態添加元素。你是?

+0

這不是一個答案,它只是一個評論。 – D4V1D

+1

我認爲這兩者都是。 –

+0

@UjwalRatra - 它可能是兩個,但SO指導明確表示答案必須回答這個問題,如果你包含代碼示例,如果它動態添加,該怎麼做,那麼也許它的答案 - 否則它只是一個評論 –

2

當附加事件處理程序時,這可能是DOM中不存在的問題。

嘗試是這樣的:

$(document).ready(function() { 
    // Handler for .ready() called. 

    $(".filter-close").click(function(){ 
     $(this).parent().remove(); 

    }); 

}); 

的$。就緒()(下面的鏈接)確保它不嘗試調用代碼中的DOM渲染之前,類似的OnLoad添加的處理程序。

Documentation for JQuery .ready() method

也有潛在的庫衝突(見@ D4V1D答案例如說),但我們不能說肯定不知道什麼錯誤消息出現在控制檯(如果有的話),理想更多關於周圍的代碼。

請按F12,看看在控制檯和/或網絡面板中打印什麼,或者如果F12不執行任何操作,請在Google「BrowserName dev console」中查看。

但是,正如說,這工作在控制檯上,所以我假設你的意思是,開發者控制檯,它其實只是一個時間問題,因此不太可能發生衝突(但仍可能語法錯誤,其他頁面上的某個地方)

相關問題