jquery DOM&事件

问答

  • 说说库和框架的区别?

  • 库为 Library ( 简写 Lib ),框架为 Framework。

  • 库是将代码集合成的一个产品,供程序员调用。面向对象的代码组织形式而成的库也叫类库。面向过程的代码组织形式而成的库也叫函数库。在函数库中的可直接使用的函数叫库函数。开发者在使用库的时候,只需要使用库的一部分类或函数,然后继续实现自己的功能。

  • 框架则是为解决一个(一类)问题而开发的产品,框架用户一般只需要使用框架提供的类或函数,即可实现全部功能。可以说,框架是库的升级版。开发者在使用框架的时候,必须使用这个框架的全部代码。

  • jquery 能做什么?

  • jquery可以做到存取文档元素、修改页面的展现样式、修改文档内容、对用户的交互作出反应、为文档添加动画改变、无刷新的从服务器取回数据、完成简单的js任务如迭代和数组控制。

  • jquery 对象和 DOM 原生对象有什么区别?如何转化?

  • 区别:
    1 jquery选择器得到的jquery对象和标准的 javascript中的document.getElementById()取得的dom对象是两种不同的对象类型;
    2 jQuery无法使用DOM对象的任何方法,DOM对象不能使用jQuery里的方法.。

  • 转化方法:

  • jQuery对象转成DOM对象(两种方法):
    1 jQuery对象是一个数据对象,通过[index]的方法,如:
    var $jq = $("#id") ; //jQuery对象  
    var dom = $jq[0]; //DOM对象
    2 jQuery本身提供,通过.get(index)方法,如:
    var $jq = $("#id"); //jQuery对象  
    var dom = $jq.get(0); //DOM对象

  • DOM对象转成jQuery对象:
    1 对于DOM对象,只需用$()把DOM对象包装起来,就可得到jQuery对象,如:
    var dom=document.getElementById("id"); //DOM对象  
    var $jq=$(dom); //jQuery对象

  • jquery中如何绑定事件?bind、unbind、delegate、live、on、off都有什么作用?推荐使用哪种?使用on绑定事件使用事件代理的写法?

  • jquery中可以使用bind()、delegate()、live()、on()四种方法绑定事件。

  • 各种方法的作用:

  • bind:会给所有匹配的元素都绑定一次事件,当元素很多时性能会变差。 而且后来动态新增的元素不会被绑定。

  • live:附加一个事件处理器到匹配目前选择器的所有元素,现在和未来。把 事件 和 选择的元素 作为函数的参数。有事件冒泡到document节点的时候,检查这个事件是不是 所绑定的 事件,target element能不能匹配 选择元素的 css选择器,如果两个条件都是true,处理函数执行。

  • delegate:是另一种绑定事件的方式。它将事件处理函数绑定在指定的根元素上, 由于事件会冒泡,它用来处理指定的子元素上的事件。与bind不同它可以自动绑定动态添加的元素。因为事件处理函数绑定在#root上,新加的子元素事件也会冒泡到#root。性能好于.bind()只绑定一个事件处理函数,绑定速度相当快。它与live() 方法很相似,但运行速度快于live()。

  • on:on()才是jQuery事件的提供者。其他的事件绑定方法都是通过.on()
    来实现的。所以推荐使用on(0

bind: function( types, data, fn ) {
    return this.on( types, null, data, fn );
}
unbind: function( types, fn ) {
    return this.off( types, null, fn );
}
live: function( types, data, fn ) {
    jQuery( this.context ).on( types, this.selector, data, fn );
    return this;
}
die: function( types, fn ) {
    jQuery( this.context ).off( types, this.selector || "**", fn );
    return this;
}
delegate: function( selector, types, data, fn ) {
    return this.on( types, selector, data, fn );
}
undelegate: function( selector, types, fn ) {
    return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
}

通过on()实现其他绑定:

//bind
$( "#id" ).bind( "click", function( e ) {} );
$( "#id" ).on( "click", function( e ) {} ); 
// delegate
$( "#id" ).delegate( "a", "click", function( e ) {} );
$( "#id" ).on( "click", "a", function( e ) {} );
*  unbind:从元素上删除一个以前附加事件处理程序。每个用.bind()

方法绑定的事件处理程序可以使用.unbind()
移除。

$('#id').unbind();
$('#id').unbind('click');//更加精确
$("#id").unbind( "click", handler );//指定阻止事件绑定的函数
var timesClicked = 0;
$( "#id" ).bind( "click", function( event ) {
alert( "The quick brown fox jumps over the lazy dog." );
timesClicked++;
if ( timesClicked >= 3 ) {
$( this ).unbind( event );
}
});//从自身内部处理程序时解除
*  off():移除一个事件处理函数。off()

方法移除用.on()
绑定的事件处理程序。

$("p").off()//移除所有段落上的事件
$("p").off( "click", "**" )//移除所有段落上的click事件
$("body").on("click", "p", func);
$("body").off("click", "p", func);//通过传入的第三个参数,仅移除先前绑定的事件处理函数
  • jquery 如何展示/隐藏元素?
  • show():显示匹配的元素。
show();//直接显示
show(speed);//第一个参数显示所花费的时间
show(speed, function);//第二个参数显示完成后执行的函数
  • hide():隐藏匹配的元素。
hide();//直接隐藏
hide(speed);//第一个参数隐藏所花费的时间
hide(speed, function);//第二个参数隐藏完成后执行的函数
$("#hidr").click(function () {
        $("span:last-child").hide("fast", function () {
          $(this).prev().hide("fast", arguments.callee);
});//当点击后选择最后一个元素进行隐藏,并使用递归和arguments.callee继续执行这个函数使隐藏元素的上一个元素也进行隐藏
  • toggle():显示或隐藏匹配元素。
  • jquery 动画如何使用?
  • 动画使用animate()方法:根据一组 CSS 属性,执行自定义动画。所有用于动画的属性必须是数字的,除非另有说明;这些属性如果不是数字的将不能使用基本的jQuery功能。属性值的单位像素(px),单位em和%需要指定使用。background-color需要使用jQuery.Color插件。
  • 语法1:animate(styles,[speed],[easing],[callback]), 这里第2,3,4参数是可选值,为动画执行的速度、缓动方式、完成时执行的函数
  • 语法2:animate(styles,[options]),第2个参数为指定动画的额外选项,如:
    设定queue为布尔值。指示是否在效果队列中放置动画。如果为 false,则动画将立即开始。
    设定step。指定每步动画执行后调用的回调函数。
$('li').animate({
opacity: .5,
height: '50%'
},
{
step: function() {
//todo
}
});

动画--参考
动画的完成finish()和停止stop()--参考

  • 如何设置和获取元素内部 HTML 内容?如何设置和获取元素内部文本?
  • html():获取集合中第一个匹配元素的HTML内容.不加参数时和innerHTML相似。当有参数时html(str),修改元素的innerHTML为参数值。
  • text():得到匹配元素集合中每个元素的合并文本和innerText方法类似。只能匹配到文本不能匹配标签,当有参数时text(str),修改元素的文本为参数值。
  • 如何设置和获取表单用户输入或者选择的内容?如何设置和获取元素属性?
  • val():获取匹配的元素集合中第一个元素的当前值value。val(str):设置str为元素的value
  • attr(str):获取匹配的元素集合中的元素特定属性的值。attr(str,value)为元素特定属性赋值。.removeAttr()可以删除属性与JS中removeAttribute()函数相似

代码

  • 使用 jquery实现如下效果参考

    代码1
  • 使用 jquery 实现如下效果参考

    代码2
    问题: 点奢侈品2的时候页面跳到了顶部,可能是什么原因?如何解决
  • 可能是因为a链接href指向#,可以给a链接指向链接设置为javascript:;、javascript:null、javascript:void(0)或者给a链接的点击事件执行的函数加入一个event的参数,设置event.preventDefault()取消它的默认点击事件。
  • 实现如下效果参考

    代码3
    提示
    1.使用代理
    2.当点击按钮时使用如下数据
var products = [
    {
        img: 'http://img10.360buyimg.com/N3/jfs/t2242/92/1446546284/374195/9196ac66/56af0958N1a723458.jpg',
        name: '珂兰 黄金手 猴哥款',
        price: '¥405.00'
    },{
        img: 'http://img10.360buyimg.com/N3/jfs/t2242/92/1446546284/374195/9196ac66/56af0958N1a723458.jpg',
        name: '珂兰 黄金转运珠 猴哥款',
        price: '¥100.00'
    },{
        img: 'http://img10.360buyimg.com/N3/jfs/t2242/92/1446546284/374195/9196ac66/56af0958N1a723458.jpg',
        name: '珂兰 黄金手链 3D猴哥款',
        price: '¥45.00'
    }
];

本博客版权归 本人和饥人谷所有,转载需说明来源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • 问答部分 一、说说库和框架的区别? 库~是一个提供了封装好很多方法的工具,在这个工具里面,用与不用都是由你决定,控...
    dengpan阅读 345评论 1 2
  • 1. 说说库和框架的区别? 类库是实现各种功能的类的集合,可以帮助编程人员简化工作,提高工作效率。就像一个小的工具...
    黄露hl阅读 142评论 0 1
  • 1.说说库和框架的区别? 库主要是封装了某些函数的集合。框架也是。使用库是指,你的代码决定什么时候从库中调用一个特...
    墨月千楼阅读 413评论 0 2
  • 1.说说库和框架的区别? 库:用来提供一些方法的集合,避免重复定义相同功能的函数并具有一定的模式兼容性, 框架,规...
    candy252324阅读 297评论 0 0
  • Q&A 1. 库和框架的区别? 库(library):将代码集合成一个产品,供开发者调用,面向对象的代码组织而成的...
    进击的阿群阅读 232评论 0 0