jQuery框架简单使用

  • 引入jQuery可以通过下载之后引入或者网络引入:
    <script src=“存放的位置”></script>

  • jQuery框架提供了一个全局对象:jQuery,它还有另外一个别名:$

  • 所有的Dom操作都可以通过jQuery来完成。

*在文档就绪之前,无法安全的操纵页面。(document).ready()仅在页面文档模型(DOM)准备好执行JS代码之后,内部代码才会运行。(window).on(‘load’, function(){…})一旦整个页面(图像或iframe,而不仅仅是DOM)准备就绪,其中包含的代码就会运行。

<html>
<head>
    <script src="https://code.jquery.com/jquery-1.9.1.min.js”></script>
    <script>
    $( document ).ready(function() {
        console.log( “document loaded” );
    });
 
    $( window ).on( “load”, function() {
        console.log( “window loaded” );
    });
    </script>
</head>
<body>
    <iframe src="http://techcrunch.com"></iframe>
</body>
</html>
  • $( document ).ready()也可以简写为:
$(function() {
    console.log( "ready!" );
})

jQuery选择器

$(选择器) 进行元素选择,返回的是jQuery的文档对象。选择器包括元素名选择器、id选择器、class选择器、属性选择器、伪类选择器等。

$(‘div’) // 元素名选择器
$(‘#img1’) // id选择器
$(‘.nav’) // class选择器
$(‘[name=link1]’) // 属性选择器
$(‘div:first’) // 伪类选择器

获取与设置元素

  • html(),获得节点的html字符串,参数可以填写html节点的字符串,会返回html节点。
$(‘ul’).html() // 返回ul标签下的所有节点
$(‘ul’).html(‘<li>haha</li>') // ul标签的子标签设置成了列表项haha
  • text(),获得节点的文本内容,参数可以填写字符串,返回的就是参数的字符串。
$(‘li’).text() // 获取li标签里的内容
$(‘li’).text(‘haha’) // 设置li标签里的内容为haha
  • val(),获得节点的value属性值,填写参数也可以设置value值。
<input value="haha" />
<script type="text/javascript">
    $('input').val() // 获取value值haha
    $('input').val('enen') // 设置value值为enen
</script>
  • attr(),获取或者修改属性值。填写一个参数为要获得的属性值;两个参数为修改属性值,第一个参数为要修改的属性,第二个参数为修改的值;设置多个属性可以使用列表作为参数。
$(‘div’).attr(‘class’) // 获取div的class值
$(‘div’).attr(‘id’, ‘haha') // 设置div的id为haha
$(‘div’).attr({‘class’: 'haha', 'id': 'enen'}) // 设置div的class为haha,id为enen

元素dom操作

创建元素

把要创建的对象直接写入$()就可以创建相应的对象节点。

new_element = $(‘<div>') // 创建了一个div对象
new_element[0] // 0号位为它的节点
new_element = $('<p>新的节点</p>') // 可以直接写入内容
new_element = $('<div><ul><li>haha</li><li>enen</li></ul></div>') // 可以创建一系列的节点

插入元素

  • 父元素.append(要添加的子元素)。append方法会把要添加的元素添加到子元素的最后。可一次添加多个项目,用逗号分隔。
$('ul').append('<li>haha</li>') // 直接为ul添加内容为haha的列表项
new_element = $('<p>enen</p>') // 也可以先创建再添加
$('#container').append(new_element)
  • 要添加的子元素.appendTo(父元素)。appendTo方法与append方法正好相反,要添加的子元素在前,父元素为参数。都是添加到自元素的末尾。
$('<li>haha</li>').appendTo('ul') // 直接添加内容为haha的列表项到ul
new_element = $('<li>enen</li>') // 也可以先创建再添加
new_element.appendTo('ul')
  • 父元素.prepend(要添加的子元素)。prepend方法会把要添加的子元素添加到子元素的最前面。可一次添加多个项目,用逗号分隔。
$('ul').prepend('<li>haha</li>') // 直接为ul添加内容为haha的列表项
new_element = $('<p>enen</p>') // 也可以先创建再添加
$('#container’).prepend(new_element)
  • 选择器.before(要插入的节点)。before方法会把要插入的节点插入到指定的节点之前。它们是同级之间插入。
$('ul>li:nth-child(3)').before('<li>ouou</li>') // 在ul的第三个li标签之前插入内容为ouou的列表项
  • 选择器.after(要插入的节点)。after方法会把要插入的节点插入到指定的节点之后。它们是同级之间插入。
$('ul>li:nth-child(3)’).after('<li>ouou</li>') // 在ul的第三个li标签之后插入内容为ouou的列表项

克隆元素

  • 要克隆的元素.clone()。clone方法会克隆指定的元素,可以把它赋给一个变量另作他用。
ol = $(‘#item’).clone()
$(‘div’).append(ol)

删除元素

  • 要删除的元素.remove()。remove方法会删除指定的元素。元素删除后,如果重新添加回页面,会丢失事件与关联数据。
$(‘ul’).remove()
  • 要删除的元素.detach()。detach方法会删除指定的元素。元素删除后会保留事件与关联数据,这点与remove不同。
$(‘ul’).detach()

元素的遍历

父级元素与所有祖先元素的遍历

  • 选择器.parent()。parent方法会返回某个元素的父元素的对象。parent()[0]会返回父元素的节点。包含它的子孙元素。
li = $('ul>li:eq(0)')
li.parent() // 返回li的父元素对象
li.parent()[0] // 返回li的父元素节点,包括它的子孙元素
  • 选择器.parents()。parents方法会返回某个元素的所有祖先元素的数组对象。通过索引可以访问某个祖先元素的节点,包括它的子孙元素。
li = $('ul>li:eq(0)')
li.parents() // 返回li的祖先元素的数组对象
li.parent()[1] // 返回li的某个祖先元素节点,包括它的子孙元素
  • 选择器.closest(选择器)。closest方法会根据它参数里的选择器找到某个节点的祖先元素里离它最近的符合条件的节点对象。
li = $('.li')
li.closest('.news') // 返回li的祖先元素里class为news的最近的节点数组对象
li.closest('.news')[0] // 返回li的祖先元素里class为news的最近的节点

子元素与所有后代元素的遍历

  • 选择器.children()。children方法可以填参数也可以不填参数。不填参数会返回某个节点的所有子元素(不含其他后代元素)。参数可以填写选择器,返回符合条件的子元素。
$('.news').children() // 查找class为news的所有子元素
$('.news').children($('#haha')) // 查找class为news的元素的id为haha的子元素
  • 选择器.find(选择器)。find方法会返回某个元素符合条件的所有后代元素。
$(‘.news’).find(‘li’) // 查找class为news元素的所有li

兄弟节点的遍历

  • 选择器.prev()。prev方法会返回某个节点的前一个兄弟节点对象。
$(‘.news>li:eq(4)’).prev() // 返回选定节点的前一个兄弟节点的数组对象
$(‘.news>li:eq(4)’).prev()[0] // 返回选定节点的前一个兄弟节点
  • 选择器.prevAll()。prevAll方法会返回某个节点之前的所有兄弟节点的数组对象。
$(‘.news>li:eq(4)’).prevAll() // 返回选定节点前的所有兄弟节点的数组对象
$(‘.news>li:eq(4)’).prevAll()[3] // 返回选定节点前的所有兄弟节点的某个节点
  • 选择器.next()。next方法会返回某个节点的下一个兄弟节点对象。
$(‘.news>li:eq(0)’).next() // 返回选定节点的下一个节点的数组对象
$(‘.news>li:eq(0)’).next()[0] // 返回选定节点的下一个节点
  • 选择器.nextAll()。nextAll方法会返回某个节点之后的所有兄弟节点数组对象。
$(‘.news>li:eq(0)’).nextAll() // 返回选定节点之后的所有兄弟节点数组对象。
$(‘.news>li:eq(0)’).nextAll()[2] // 返回选定节点之后的所有兄弟节点数组对象中的某个节点。
  • 选择器.siblings()。siblings方法会返回选定节点的所有兄弟节点的数组对象。
$(‘.news>li:eq(3)’).siblings() // 返回选定节点的所有兄弟节点数组对象。
$(‘.news>li:eq(3)’).siblings()[2] // 返回选定节点的所有兄弟节点数组对象中的某个节点。

each方法

each方法可以把选择器选择出来的数组对象进行遍历,它的参数为方法函数。

$(‘.news’).children().each(function(){
    console.log(this)
})

元素样式

通过css获取或者设置样式

css方法可以可以获得或者设置元素的样式。
获得:选择器.css(属性名)
设置:选择器.css(属性名,值),选择器.css({多个属性键值对})

$(‘#div1’).css(‘width’) // 获取width属性值
$(‘#div1’).css(‘border’, ’10px solid red') // 设置border的属性值
$(’#div1’).css({
    ‘border’: ‘1px solid red’,
    ‘background’: ‘#fff’,
    ‘padding’: ’20px’
})

classList的操作

  • 选择器.addClass(值)。addClass方法会给指定的元素添加指定的class值。
$(‘#div1’).addClass(‘haha’) // 给id为div1的元素添加class值haha
  • 选择器.removeClass(值)。removeClass方法会删除指定元素的指定class值。
$(‘#div1’).removeClass(‘enen’) // 给id为div1的元素删除class值enen
  • 选择器.toggleClass(值)。toggleClass方法在指定元素没有指定的值时会添加上指定的值,指定元素有指定的值时会删除指定的元素。
$(‘#div1’).toggleClass(‘haha’) // id为div1的元素class值中有haha就会把haha删除,没有haha就会添加上haha
  • 选择器.hasClass(值)。hasClass方法用于判定指定的元素有没有指定的class值,返回值为布尔值true或者false。
$(‘#div’).hasClass(‘haha’) // 判断id为div1的元素class里有没有haha

元素大小的获取与设置

  • 获取、设置元素width和height的大小:
    选择器.width()
    选择器.height()
    设置大小直接填入参数。
$(‘#div1’).width() // 获取元素的width
$(‘#div1’).height() // 获取元素的height
$(‘#div1’).width(‘100px’) // 设置元素的width
$(‘#div1’).height(‘100px’) // 设置元素的height
  • 获取元素包含padding的宽高:
    选择器.innerWidth()
    选择器.innerHeight()
$(‘#div1’).innerWidth() // 获得元素包含padding的宽度
$(‘#div1’).innerHeight() // 获得元素包含padding的高度
  • 获取元素包含margin、padding、边框线的宽高(默认不包含margin,要包含margin要在参数里填true):
    选择器.outerWidth()
    选择器.outerHeight()
$(‘#div1’).outerWidth() // 获得元素包含padding、边框的宽度
$(‘#div1’).outerHeight() // 获得元素包含padding、边框的高度
$(‘#div1’).outerWidth(true) // 获得元素包含margin、padding、边框的宽度
$(‘#div1’).outerHeight(true) // 获得元素包含margin、padding、边框的高度
  • 获取元素的位置:
    选择器.position()
$(‘#div’).position() // 获取元素的位置

事件处理

  • 选择器.on(“事件类型”, “子选择器”, data, function(e){})
$('#container').on('click', {'myname': 'haha'}, function(e){
    console.log('click')
    console.log(e.data) // 获得第二个参数传入的数据
    console.log(e.pageX, e.pageY) // 获得点击的位置
  • 选择器.bind(“事件类型”, data, function(e){})
$('#container').bind(‘click', {'myname': 'haha'}, function(e){
    console.log('click')
    console.log(e.data) // 获得第二个参数传入的数据
    console.log(e.pageX, e.pageY) // 获得点击的位置
  • on和bind方法的区别在于on方法可以填入参数‘子选择器’,通过子选择器可以实现事件代理。
$('.news').on('click', 'li', function(e){
    e.stopPropagation()
    console.log(arguments)
    console.log($(this).text())
            })
  • jQuery中事件机制为冒泡机制。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容

  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,095评论 0 3
  • 一、样式篇 第1章 初识jQuery (1)环境搭建 进入官方网站获取最新的版本 http://jquery.co...
    凛0_0阅读 3,354评论 0 44
  • 这是16年5月份编辑的一份比较杂乱适合自己观看的学习记录文档,今天18年5月份再次想写文章,发现简书还为我保存起的...
    Jenaral阅读 2,731评论 2 9
  • 一:认识jquery jquery是javascript的类库,具有轻量级,完善的文档,丰富的插件支持,完善的Aj...
    xuguibin阅读 1,703评论 1 7
  • DOM创建节点及节点属性 通过JavaScript可以很方便的获取DOM节点,从而进行一系列的DOM操作。但实际上...
    阿r阿r阅读 1,002评论 0 9