您的位置:首页技术文章
文章详情页

javascript - jquery 事件执行问题

【字号: 日期:2023-06-02 13:48:35浏览:33作者:猪猪

问题描述

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
相关文章: