2013-09-27 50 views
0

快樂星期五errybody!jquery - 單擊事件綁定並在頁面加載時啓動

好的,所以我在綁定一個'click'事件時遇到了麻煩,當一個div的特定類加載。

會發生什麼情況是在加載時觸發'click'事件。我甚至在綁定之前嘗試解除綁定。

onAppLoad = function() { 
    console.log('span 4 loaded'); 

    hovering = function() { 
    console.log('hovering!'); 
    } 

    $.each($('.span4 > a'), function() { 
    var whichApp = $(this).attr('data-content'); 

    $(this).unbind('click'); 
    $(this).bind('click', hovering()); 

    }) 
} 

$('.span4').load(onAppLoad()); 
+0

您能否提供一個現場示例? –

回答

3

你有一個語法錯誤:

$(this).bind('click', hovering()); 

在這裏你調用的函數hovering,而你希望它給參考的東西。試試這個:

$(this).bind('click', hovering); 

你​​是錯的太(出於同樣的原因)。

$('.span4').load(onAppLoad); 

備註關於.each。當你遍歷一個jQuery對象,你應該把它寫這樣的:

$('.span4 > a').each(function() {}) 
+0

啊......你的建議與引用vs調用工作。也切換我的。像你推薦的那樣。謝謝! – veryrarecandy

1

夫婦的事情,我看到我的代碼:
1.您缺少onAppLoad()
2.更改$(this).bind('click', hovering());結束括號到$(this).bind('click', hovering);
3.更改$('.span4').load(onAppLoad());$('.span4').load(onAppLoad);

出於好奇,爲什麼不把所有的事件處理程序在$(document).ready()事件?

+0

我不想將事件放在.ready()上的處理程序上,因爲跨度是由php編寫的。 – veryrarecandy

+0

這有什麼關係?它們在客戶端由瀏覽器呈現,而不是由服務器端的PHP呈現。 –

+0

起初,我推測跨度不會被加載到.ready()上的DOM上 - 這就是爲什麼我當時不想綁定它們的原因。但是我把它轉換成綁定就緒,它工作的很好! – veryrarecandy

相關問題