jquery 代码执行 的疑问

<style type="text/css">
body {
background:red;
}
</style>
<script type="text/javascript" src="jquery-1.3.1.js"></script>
<script type="text/javascript">
$(document.body).css( "background", "black" );//这句没执行!!!
</script>
为什么jquery代码 没执行
非得 在 $(document).ready(function(){})或$(function(){}) 执行吗 不能像javascript 直接执行吗

把jQuery代码写到$(document).ready(function(){/* code */})【可以简写成$(function(){/* code */})】里面是为了确保DOM已经加载完毕,再执行里面的代码,并不是说“不能”像JavaScript那样直接执行。

你的这段代码不是没有执行,而是因为DOM没加载完毕,才没产生预期效果。

你如果用遨游的话,可以打开你这个文件,然后调出收集面板【默认快捷键Ctrl + G】,里面输入你的那段代码,点击绿色的运行按钮就会发现可以运行的。IE8的话按F12可以调出调试工具来找到相应的调试器。

写JavaScript很经常发生的一种错误就是,在DOM没有加载完毕,就使用了相应的对象【就如你的代码里面那句css()】,就会出现脚本错误。所以如果涉及到DOM的东西都要放到window.onload里面运行,而jQuery的$(document).ready()就改善了这方法,而且还能放N个$(document).ready()。而window.onload只能运行一次。

你可以把下面的代码加到HTML里面试下:

普通JavaScript:

window.onload=funcion(){alert("这个onload不会运行");};

window.onload=funcion(){alert("因为这个onload把上面的覆盖了");};

加入jQuery.js:

$(document).ready(funcion(){alert("这是第一个ready");};

$(funcion(){alert("这是第二个ready");});

温馨提示:内容为网友见解,仅供参考
第1个回答  2010-01-07
没有入到$(document).ready(function(){})或$(function(){})里怎么执行啊
第2个回答  2010-01-07
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">
body {
background:red;
}
</style>
<title>Hello World jQuery!</title>
<script type="text/javascript" src="scripts/jquery-1.3.2-vsdoc2.js"></script>
</head>
<body>
<input type="button" onclick="a();" />
<script type="text/javascript">
function a()
{
$(document.body).css( "background", "black" );//这句没执行!!!
}
</script>

</body>
</html>

那句本来就是对的没错,没有得到想要的效果是因为你前面已经定义了CSS,想要预想的效果就必须要一个触发条件,如上代码。而且我觉得象你原来的代码那样写没什么意义吧? 或者你可以把样式表去掉也可以~ 那一句jquery和样式表定义实际上有什么区别呢?
第3个回答  2010-01-07
$(document).ready(function(){})是jquery的核心,没有他是不能用DOM的,
你的语句$(document.body)就是DOM方式运行的

除非你用函数调用
function tx(){
$(document.body).css( "background", "black" );
}

jquery 代码执行 的疑问
把jQuery代码写到$(document).ready(function(){\/* code *\/})【可以简写成$(function(){\/* code *\/})】里面是为了确保DOM已经加载完毕,再执行里面的代码,并不是说“不能”像JavaScript那样直接执行。你的这段代码不是没有执行,而是因为DOM没加载完毕,才没产生预期效果。你如果用遨游的话,可以...

关于jquery的疑问,什么叫做"隐式迭代
('.goods-items').css('color','red')非常简单,直接对所有的li写了样式。但是如果是原生JavaScript,就要 let items = document.getElementsByClassName('goods-items')for(let i = 0;i<items.length;i++){ items[i].style.color = 'red'}很明显的,JavaScript要遍历,就是显性迭代;jq不...

关于用jQuery修改CSS样式的一点代码理解上的疑问
你想错了,这个JQERY里面的addClass和removeClass这两个方法是添加样式的就是class 。至于你说的参数一定是代表颜色而不是其他什么元素么? 那就要看你想添加什么样式了, 上面那个不是绿色的意思,而是名为green(他把样式名字起成了绿色的英文单词)...

jquery unbind方法的疑问
1.绑定btn1的点击事件 2.解绑btn2的所有触发事件 3.绑定btn2的点击事件 alert('btn2 clicked')因为你的btn2触发的alert('btn2')的事件是在btn1点击了之后才绑定,然而btn2.unbind()作为在页面加载之后马上执行的代码所以之后不会再次执行。;

jQuery each的疑问
\/\/第一种实现 var _hdArr = $("input:hidden");var len = _hdArr.length;var str = "";_hdArr.each(function(index,node){ str += node.value;if(index!=(len-1)) str += ",";});alert(str);\/\/第二种实现 var _eachArr = [];_hdArr.each(function(index,node){ ...

jquery的$.each疑问
不会,一旦返回数组之后,就以那个数组循环,而不是每次都重新获取。

jQuery中each的疑问?
由于each有单独操作的优势,所以很多人习惯使用它,在楼主给的具体代码中,当然,当然方法二是比较好的,因为代码量少 还有 each(function(){})的function函数中可以带有一个参数 ("img").each(function(index){});这个index是告知函数当前已遍历到第几个函数了 index是从0开始的索引 ...

求助jquery点击只能滚动一次??
你好,你需要先明确一个问题,当执行jQuery的animate方法的时候,是指从元素当前状态平滑过渡到指定状态。当你第一次点击的时候,当前状态是 top = 0 所以,.page元素的 top 会从 0 变化为 -200px 而当你再次点击时,当前状态的 top = -200px 了,.page元素的 top 从 -200px 变化为 -...

jquery创建插件的一个疑问 等待大侠
jQuery.fn.extend(nihao:function(){ } )在调用的时候 就是$.fn.nihao();二、扩展jQuery对象本身 .extend($.fn,{ nihao:function(){ } })在调用的时候是 $.nihao();其实不是常用那种方法的问题,很多情况都是看自己个人爱好,习惯等。只要能达到自己需要的效果就行了 ...

js $("#" + id+ " h").text(); IE内核下浏览器获取不到文本值。火狐浏览...
尊敬的用户,您好!很高兴为您答疑。这是一般的jquery语法,鉴于您的描述推测您应该是所要获取的对象还未生成,据此建议您开启一下火狐浏览器的firebug,步进一下在执行此方法时的各种输出及元素变化。另外,您的代码中可能多了一个空格,而在不同的浏览器下对于此类字符的敏感度是不同的,这也极有...

相似回答
大家正在搜