jquery點擊事件失效原因及其解決辦法

關於jquery的點擊事件的比較,發現在某種情況下點擊事件不管用了;將使用三種點擊觸發事件進行比較,可以看出一些端倪,對於開發者而言,想必是十分有用的;


chenglin博客,原文鏈接:http://www.chenglin.name/web/js-web/484.html


我們將用到三種點擊觸發事件來比較,分別是:


$('').click(function(){}); // 指定對象

$(document).on('click','',function(){}); // 獲取整個網頁文檔對象來指定

function a_test_func(){}; // 調用函數

這裏我將寫出兩個a標籤來完成數據點擊的測試,網頁效果如下:


<a href="http://www.chenglin.name/wp-content/uploads/2014/02/1.png"><img src="http://www.chenglin.name/wp-content/uploads/2014/02/1.png" alt="1" width="323" height="146" class="alignnone size-full wp-image-485" /></a>

可以看到兩個a標籤,一個名字爲 a_test,一個爲a_add.分別代表一下意思:


a_test:默認在網頁中直接寫一個a標籤

a_add: 使用js函數在a_test後面追加一個a標籤名爲a_add;

a_test直接寫入網頁,a_add由函數追加的代碼,他們兩個都有一個class爲a_test;代碼如下:


<a class="a_test" href="#" onclick="a_test_func()">a_test</a>


<script type="text/javascript">

$('.a_test').click(function(){

console.log('jquery');

});

// 獲取整個網頁文檔對象

$(document).on('click','.a_test',function(){

console.log('document');

});

// 函數

function a_test_func(){

console.log('********************');

console.log('function');

}


function a_add(){

$('.a_test').after('<a class="a_test" href="#" onclick="a_test_func()">a_add</a>');

}

a_add();

</script>

我將從console輸出來查看兩個a標籤點擊的結果,首先看沒有點擊的時候:

原文鏈接:http://www.chenglin.name/web/js-web/484.html

點擊第一個a標籤,這個是直接寫入網頁的:

原文鏈接:http://www.chenglin.name/web/js-web/484.html

點擊第二個a標籤,這個是代碼追加的:

原文鏈接:http://www.chenglin.name/web/js-web/484.html

可以看到差異了吧,發現追加的第二個a標籤,沒有輸出:


$('').click(function(){}); // 指定對象的點擊結果 jquery

這樣可以得出結論,關於網頁追加的代碼,是不能使用


$('').click(function(){}); // 指定對象的

總結一下,推測上面這個監聽函數,是在網頁加載的時候就指定了對象,而通過代碼追加,如json追加,的元素,是不能在匹配這個事件的。

以後可以統一使用,以下的方法來避免,失效的問題:


$(document).on('click','',function(){}); // 獲取整個網頁文檔對象來指定

function a_test_func(){}; // 調用函數

對於這個兩個方法,是元素在點擊事件後才進行處理,所有使用後面兩種方法,可以避免點擊事件在一些未知的情況下失效…….大家可以拷貝上面的代碼,指定jquery試一下~~


chenglin博客,原文鏈接:http://www.chenglin.name/web/js-web/484.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章