你是问Query对象如何转为dom对象吧?若是的话,答案如下:
创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:网站制作、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的崖州网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
jQuery获取的对象(通过$(...))是jQuery对象,要想转为dom对象,有如下几种方式:
如:var oDiv = $('#myDiv');
oDiv[0]
oDIv.get(0)
使用each函数也能间接实现jQuery对象到dom对象的转换,如:
oDiv.each(function(){
console.log(this instanceof jQuery); // 控制台打印输出false,即:此处的this已经不是jQuery对象了
});
jQuery对象是由其prototype的init构造器进行构造实例,与prototype无关,可以抽离出来。
// 最新版本2.1.4
// 73行定义了jQuery构造函数
// Define a local copy of jQuery
jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
// Need init if jQuery is called (just allow error to be thrown if not included)
// 76行 jQuery对象通过prototype下的init方法进行构造并返回实例
return new jQuery.fn.init( selector, context );
},
// 92行 代码告诉我们 jQuery.fn 和 jQuery.prototype 是指向同一对象,也就是说fn是prototype的简写
jQuery.fn = jQuery.prototype = {
// The current version of jQuery being used
jquery: version,
// 96行修正constructor属性指回jQuery。同时jQuery对象虽然是用jQuery.fn.init方法构造,但constructor依然修正指向了jQuery,非为jQuery.fn.init,看下方代码
constructor: jQuery,
// 2735行 定义了jQuery.fn.init构造函数
init = jQuery.fn.init = function( selector, context ) {
// 2835行 使得jQuery.fn.init构造函数的原型和jQuery原型同时指向了同一个对象
// Give the init function the jQuery prototype for later instantiation
init.prototype = jQuery.fn;
// 9202行 而$仅仅只是jQuery对象的一个别名,跟无new构造无关
window.jQuery = window.$ = jQuery;
大概的代码结构就是这样子。
jQuery仅仅为了实现无new构造,在其原型下创建了init方法(仅充当构造器)为其构造实例对象,init方法的原型和jQuery原型指向了同一个对象(当然就成了循环引用),为后续的实例方法和实例插件机制打下基础(如果不指向同一对象写实例插件将会出现$.fn.init.fn.xxxxx这一幕),并修正constructor的指向,使得看起来像是由jQuery构造器构造。
$只是jQuery对象的别名, $ === jQuery 是成立的,并且因为使用new操作符的时候 ( new jQuery() ) 和 jQuery() 的 reutrn 值会覆盖new操作符生成的实例,所以 jQuery() 和 new jQuery () 的结果也是一样的。
而题主示例是
1、 $是实现jQuery无new构造的方法
2、 $ !== jQuery
3、 jQuery() 和 new jQuery的结果是不同的
监控一个容器,当用户点击时弹出
代码如下
$(function(){
$("Element").click{function(){
alert("点击我哦!");
}
}
});
基本对象获取(注意这里获取的都是Jquery对象而不是Dom对象哦,但是他俩是可以转换滴)
代码如下
复制代码
代码如下:
$("*")
‘表示获取所有对象
但是我至今没这样用过
$("#XXX")
'获得
id=XXX
的元素对象(id可以是标签的id或CSS样式id)
常用
$("input[name='username']")
获得input标签中name='userName'的元素对象
常用
$(".abc")
'
获得样式class的名字是.abc的元素对象
常用
$("div")
'
标签选择器
选择所有的div元素
常用
$("#a,.b,span")
'表示获得ID是()a的元素和使用了类样式b的元素以及所有的span元素
$("#a
.b
p")
'ID号是a的并且使用了
b样式的
所有的p元素
例
假设有如下代码。
复制代码
代码如下:
var
target_obj
=
jQuery('#target_obj_id');
则,若需要判断id为target_obj_id是否存在的话,可以实现的方法有一下两种:
1、
代码如下
复制代码
代码如下:
if
(target_obj.length
0)
{
//如果大于0
标识
id
为target_obj_id的对象存在,否则不存在
//对象存在的处理逻辑
}
else
{
//对象不存在的处理逻辑
}
2、
代码如下
复制代码
代码如下:
if
(target_obj[0])
{
//对象存在的处理逻辑
}
else
{
//对象不存在的处理逻辑
}
这个太多了!
1、JQuery的核心的一些方法
each(callback) '就像循环
$("Element").length; ‘元素的个数,是个属性
$("Element").size(); '也是元素的个数,不过带括号是个方法
$("Element").get(); ‘某个元素在页面中的集合,以数组的形式存储
$("Element").get(index); '功能和上面的相同,index表示第几个元素,数组的下标
$("Element").get().reverse(); ‘把得到的数组方向
$("Element1").index($("Element2")); '元素2在元素1中的索引值是。
2、基本对象获取(注意这里获取的都是Jquery对象而不是Dom对象哦,但是他俩是可以转换滴)
$("*") ‘表示获取所有对象 但是我至今没这样用过
$("#XXX") '获得 id=XXX 的元素对象(id可以是标签的id或CSS样式id) 常用
$("input[name='username']") 获得input标签中name='userName'的元素对象 常用
$(".abc") ' 获得样式class的名字是.abc的元素对象 常用
$("div") ' 标签选择器 选择所有的div元素 常用
$("#a,.b,span") '表示获得ID是a的元素和使用了类样式b的元素以及所有的span元素
$("#a .b p") 'ID号是a的并且使用了 b样式的 所有的p元素
3、层级元素获取
$("Element1 Element2 Element3 ....") '前面父级 后面是子集
$("div p") '获取div下面的所有的 p元素
$("div + p") 'div元素后面的第一个 p元素
$("div ~ p") 'div后面的所有的 p元素
4、简单对象获取
$("Element:first") 'HTML页面中某类元素的第一个元素
$("Element:last") 'HTML页面中某类元素的最后一个元素
$("Element:not(selector)") '去除所有与给定选择器匹配的元素,如:$("input:not(:checked)") 表示选择所有没有选中的复选框
$("Element:even") '获得偶数行
$("Element:odd“)'获得奇数行
$("Element:eq(index)") '取得一个给定的索引值
$("Element:gt(index)") '取得给定索引值的元素 之后的所有元素
$("Element:lt(index)") '取得给定索引值的元素 之前的所有元素
5、内容对象的获取和对象可见性
$("Element:contains(text)") '元素中是否包含text文本内容
$('Element:empty") '获得元素不包含子元素或文本的
$("Element:partnt") '获得元素包含子元素或文本的
$("Element:has(selector)") ‘是否包含某个元素, 如:$("p:has(span)")表示所有包含span元素的p元素
$("Element:hidden") '选择所有可见元素
$("Element:visible") '选择所有不可见元素
6、其他对象获取方法
$("Element[id]") '所有带有ID属性的元素
$("Element[attribute = youlika ]" '获得所有某个属性为youlika的元素
$("Element[attribute != youlika ]" '获得所有某个属性为不是youlika的元素
$("Element[attribute ^= youlika ]" '获得所有某个属性为不是youlika的开头的元素
$("Element[attribute $= youlika ]" '获得所有某个属性为不是youlika的结尾的元素
$("Element[attribute *= youlika ]" '获得所有某个属性包含youlika的开头的元素
$("Element[selector1][selector2][....]") '符合属性选择器,比如$("input[id][name][value=youlika ]")表示获得带有ID、Name以及value是youlika 的input元素。
7、子元素的获取
$("Element:nth-child(index)") '选择父级下面的第n个元素
$("Element:nth-child(even)") '选择父级下面的偶数
$("Element:nth-child(odd)") '选择父级下面的奇数
$("Element:nth-child(3n+1)") '表达式
$("Element:first-child") '选择父级下面的第一个子元素
$("Element:last-child") '选择父级下面的最后一个子元素
$("Element:only-child") '匹配父级下的唯一的一个子级元素,例如dt在dl列表中唯一,那么将选择dt
8、表单对象获取
$(:input)//查找所有的Input元素,当然也包括下拉列表,文本域,单选框,复选框等。
$(:text)//匹配所有的单行文本框
$(:password)//匹配所有的密码框
$(:radio)//匹配所有的单选按钮
$(:checkbox)//匹配所有的复选框
$(:submit)//匹配所有的提交按钮
$(:image)//匹配所有的图像域,例如
$(:reset)//匹配所有的重置按钮
$(:button)//匹配所有的按钮
$(:file)//匹配所有的文件上传域
$(:hidden)//匹配所有的不可见元素或者type为hidden的元素
$(:enabled)//匹配所有可用的input元素,比如radio:enabled表示匹配所有可用的单选按钮
$(:disabled)//匹配所有的不可用input元素,作用与上相反
$(:checked)//匹配所有选中的复选框元素
$(:selected)//匹配所有的下拉列表
9、元素属性的设置与移除
$("Element").attr(name) '取得第一个匹配的属性值,比如$("img").attr("src")
$("Element".attr(key,value)") '某一个元素设置属性
$("Element".attr({key:value,key1:value,....})) ‘为某个元素一次性设置多个属性
$("Element").attr(key,function) '为所有匹配的元素设置一个计算的属性值。
$("Element").removeAttr(name)//移除某一个属性
jQuery通过name获取对象的方法是:
使用jQuery获取name="nw"的input对象:$('input[name="nw"]');
使用$('input[name="nw"]').val()方法或$('input[name="nw"]').html()方法来获取其值。
和JavaScript获取对象值一样,input、select、textarea等表单类对象用val()方法来获取其值;div、span等对象用html()获取其值,如:$('input[name="nw"]').val();
设置对象的值,如:$('input[name="nw"]').val('123');
注意:
1.通过name获取对象值,获取的是第1个对象的值。name是可以重复的。
2.通过name设置对象值,设置的是所有对象的值。
你可以理解为对象,对象自然具备属性和方法。
但是事实上javascript这个东西既没有对象也没有方法,只是看起来像而已。jQuery就是变量,jQuery()就是函数,jQuery['extend']则说明jQuery是数组,['extend']是变量,jQuery['extend']()又是函数。区别就是带有()就是函数,否则就总是被当变量处理的。
如
function a() {
return 5;
}
console.log(a); 得到 function
console.log(a()); 得到 5