您的位置:首頁技術文章
文章詳情頁

javascript - jquery 事件執行問題

瀏覽:129日期:2023-06-02 13:48:35

問題描述

function tableColor() { alert(0) //這里執行 $('.table tr:odd').css('background', '#f8f8f8');} 第一種寫法:tableColor();//執行alert(0),彈出“0”,表格顏色**沒有變化**。第二種寫法:$(function() { tableColor();請輸入代碼})//彈出“0”,表格顏色變化了。

為什么不同寫法造成不同的結果,道理來說同一個函數不會只執行一半吧。

問題解答

回答1:

$(function(){//這邊是頁面加載完后才執行的代碼})你的第一種寫法是頁面還沒加載完就執行了,所以沒檢測到DOM就不會改變顏色了

回答2:

第二種是.ready()的簡寫。具體的去查文檔吧。

回答3:

一般引用js都是放在<head></head>里面,第一種寫法執行的時候,頁面還沒加載完,所以找不到$('.table tr:odd')這個選擇器;第二種是在頁面加載完成后執行的,所以能改變選擇器的顏色。

要么采用第二種方法,要么把js引用加在頁面最后。

回答4:

第一種寫法,在執行你的代碼的時候,頁面上可能還沒有加載出來表格table 這個元素,所以就可能會出現沒有找到元素的情況,所以就沒有顏色變化。第二種寫法是等頁面元素加載完成之后再執行你的代碼,這樣就保證了頁面中已經加載出來所有的元素了,代碼就能找到需要的元素,所以就會做出相應的變化了

回答5:

$(function() { // DOM加載完畢});

你兩次的區別在于,第一次在DOM沒有加載完畢調用 $('.table tr:odd') 可能沒有獲取到對應元素,你可以打印出來看看,而第二次肯定獲取到了。

建議把 JS 代碼或引入的 JS 文件放在頁面底部,<BODY> 之前即可.

回答6:

跟一樓回答的類似,第一種寫法,如果是放在.table標簽之前,在dom還沒加載之前就執行的話,可能$選擇器都找不到dom,也就改不了顏色了。

而第二種,建議查看jquery文檔描述,我這邊打不開jquery官網,翻一篇別的其他地方的http://www.css88.com/jqapi-1....

javascript - jquery 事件執行問題

回答7:

1.你第一種中寫法是在document標籤未加載完成的情況下執行。換句話你html沒有加載完,你就對其裡面.table tr:odd 添加樣式,js腳本就不知道這個對象是哪個,所以會系undefine。元素沒有加載完成。但是function的語法沒有錯誤,所以還是會alert 02.$(function(){})執行,即等待html加載完成時候,才執行裡面的方法,這個時候,html加載完了,js就補抓到該對象是哪個元素,所以可以設置樣式。具體參考:http://www.w3school.com.cn/h.asp

回答8:

此題終結

回答9:

第一種寫法:tableColor();//執行alert(0),彈出“0”,但是dom沒有選中,代碼是逐行執行的

第二種寫法:是文檔加載完成之后執行$(function() {

tableColor();

})

結論,js的引入放在文檔底部,html內部js除了自定義函數,統一寫在$(function() {})里面,確保文檔執行完畢js代碼執行

標簽: JavaScript
相關文章:
国产综合久久一区二区三区