2012-04-10 95 views
0

我找不到任何解決方案來讓這個jQuery事件工作。jquery:live(click)ajax with one(click)event

$(window).one('click',function(){ 
    console.log('hide something'); 
    return false; 
}); 

$('a.ajax').live('click', function(e){ 
    console.log('ajax requesting'); 
    return false; 
}); 

我希望「A」元素應該做ajax請求,而不是它的默認值以及觸發窗口的點擊事件一次。從A的點擊中刪除「返回false」將觸發窗口的點擊,但不會阻止其第一次點擊後的默認行爲並繼續進行非Ajax請求。

這兩個處理程序都在不同的閉包,所以我不能創建一個變量來幫助它工作,而且我也不想創建一個全局變量。

從我上面的例子應該導致:
- > AJAX請求(第1點擊)
- >隱藏着什麼(第1點擊)
- > AJAX請求(第二次點擊)
- > AJAX請求(第三點擊)

感謝您的幫助!

+0

我注意到你是新來的。歡迎來到StackOverflow!如果您喜歡我的回答(下面),請確保您點擊旁邊的「複選框」以「接受」爲正確答案。 – nzifnab 2012-04-10 17:35:20

+0

是的。我剛開始在編程領域做了一些認真的愛好,並決定從Web應用程序開始。 :) ...請原諒我的英語。 – Kevin 2012-04-10 19:16:20

回答

2

在您的a事件處理程序中添加第一行e.preventDefault()(並刪除返回false)。

$('a.ajax').live('click', function(e) { 
    e.preventDefault(); 
    console.log('ajax requesting'); 
}); 

「返回false」將取消所有未來事件(甚至是傳播一個高達窗口),但preventDefault()方法只會阻止常規動作發生,但持續的事件鏈。

更多信息:jQuery e.preventDefault documentation

+0

謝謝。現在我知道返回false和preventDefault()之間的區別,許多文章都說它們是一樣的。非常感謝您的幫助。 – Kevin 2012-04-10 19:05:56