jQuery 特性操作详解及实例代码

前面的话

  每个元素都有一个或者多个特性,这些特性的用途就是给出相应元素或者其内容的附加信息。操作特性的DOM方法主要有3个:getAttribute()方法、setAttribute()方法和removeAttribute()方法,而在jQuery中用一个attr()与removeAttr()就可以全部搞定了,包括兼容问题。本文将介绍jQuery中的特性操作

获取特性

  jQuery中用attr()方法来获取和设置特性,attr是attribute(特性)的缩写,在jQuery DOM操作中会经常用到attr()方法

attr(attributeName)

  attr(传入特性名):获取特性的值,相当于DOM中的getAttribute()

<div id="test"></div>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script>
console.log(test.getAttribute('id'));//'test'
console.log($('#test').attr('id'));//'test'
</script>

  [注意]attr()方法只获取第一个匹配元素的属性值。要获取每个单独的元素的属性值,我们依靠jQuery的.each()或者.map()方法循环

<div class="test" id="ele1">元素一</div>
<div class="test" id="ele2">元素二</div>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script>
console.log($('.test').attr('id'));//'test'
$('.test').each(function(index) {
 console.log(index+":"+$(this).attr('id'));//'1:ele1 2:ele2'
});
</script>

prop()

  属性(property)和特性(attribute)是不同的。属性是DOM节点的属性,而特性是HTML标签的特性

  [注意]关于属性和特性的区别的详细信息移步至此

<div id="test" data="abc"></div>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script>
test.data = 123;
//IE8-浏览器返回123,其他浏览器返回'abc'
console.log(test.getAttribute('data'))
console.log(test.data)//123
//IE8-浏览器返回123,其他浏览器返回'abc'
console.log($('#test').attr('data'))
console.log($('#test').prop('data'))//123
</script>

  由上面代码可知,jQuery并没有解决低版本IE浏览器属性和特性混淆的问题

设置特性

  设置特性虽然依然使用attr()方法,但却有3种方式

【1】attr(attributeName,value)

  attr(特性名, 特性值):设置特性的值,相当于DOM中的setAttribute()

<div id="test"></div>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script>
test.setAttribute('title','abc');
console.log(test.getAttribute('title'))//'abc'
$('#test').attr('title','123');
console.log($('#test').attr('title'));//'123'
</script>

  jQuery禁止改变一个<input>或<button>元素的type特性,会静默失败。因为IE8-不会允许改变<input>或者<button>元素的type特性,静默失败

<input id="test" type="text">
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script>
test.setAttribute('type','button');
$('#test').attr('type','button');
</script>

【2】attr(attributes)

  attr(attributes):给指定元素设置多个特性值,即{特性名一: “特性值一”,特性名二:“特性值二”,…}

  当设置多个特性,包裹特性名的引号是可选的

<div id="test"></div>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script>
test.setAttribute('title','abc');
test.setAttribute('a','abc');
console.log(test.getAttribute('title'))//'abc'
console.log(test.getAttribute('a'))//'abc'
$('#test').attr({
  title: '123',
  a: '123'
});
console.log($('#test').attr('title'));//'123'
console.log($('#test').attr('a'));//'123'
</script>

  [注意]设置样式名“class”特性时,必须使用引号。否则IE8-浏览器下会报错

<div id="test"></div>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script>
$('#test').attr({
  class: 'test'
});
//IE8-浏览器会报错,其他浏览器输出'test'
console.log($('#test').attr('class'));
</script>

【3】attr(attributeName,function(index,attr))

  attr(特性名,函数值):通过使用一个函数来设置属性,可以根据该元素上的其它属性值返回最终所需的属性值

  函数中的index表示元素在匹配集合中的索引位置,html表示元素原来的HTML内容,this指向当前的元素,函数返回用来设置的值

<div class="test" id="ele1" title="元素">元素一</div>
<div class="test" id="ele2" title="元素" >元素二</div>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script>
$('.test').attr('title',function(index,attr){
  return attr + this.className +index
})
console.log($('#ele1').attr('title'));//元素test0
console.log($('#ele2').attr('title'));//元素test1
</script>

  如果用javascript实现类似的效果,实际上就是字符串连接

  [注意]IE8-浏览器不支持getElementsByClassName()方法

<div class="test" id="ele1" title="元素">元素一</div>
<div class="test" id="ele2" title="元素" >元素二</div>
<script>
var classTest = document.getElementsByClassName('test');
for(var i = 0; i < classTest.length; i++){
  classTest[i].title = classTest[i].title + classTest[i].className + i;
}
console.log(ele1.title);//元素test0
console.log(ele2.title);//元素test1
</script>

删除特性

removeAttr(attributeName)

  removeAttr()方法使用原生的removeAttribute()函数,但是它的优点是可以直接在一个jQuery 对象上调用该方法,并且它解决了跨浏览器的特性名不同的问题

  要移除的属性名从1.7版本开始,可以是一个空格分隔的属性列表

<div id="ele1" title="元素" data="value">元素</div>
<script src="http://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script>
console.log($('#ele1').attr('title'));//'元素'
console.log($('#ele1').attr('data'));//'value'
$('#ele1').removeAttr('title data');
console.log($('#ele1').attr('title'));//undefined
console.log($('#ele1').attr('data'));//undefined
</script>

通过此文,希望大家能对jQuery 特性操作的知识掌握,谢谢大家对本站的支持!

(0)

相关推荐

  • jQuery实现边框动态效果的实例代码

    话不多说.静态效果图如下 实代码如下 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style> .myDiv{ width: 300px; height: 200px; border: 1px solid rgba(0,0,0,0.2); margin: 50px ; position: relative;

  • jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法

    最近在一个ASP.NET MVC5项目中使用Bootstrap的模态窗(弹出层)来让用户填写内容,其中的一个编辑框提供了自动完成功能,用jQuery UI Autocomplete来实现. 因为我是WEB前端小白,遇到一个问题很久也没解决掉,所以特简单记录一下,供以后查阅. 问题:不使用模态窗的时候,autocomplete可以很好的工作,使用模态窗时弹出的选择菜单会被模态窗遮挡. 解决过程: 首先查到的解决办法是在*autocomplete.css中找到.ui-autocomplete伪类,添

  • jQuery实现图片轮播效果代码

    整理以前用jQuery实现的图片轮播效果. 1. 不做操作时,自动轮播  2. 鼠标悬浮在图片上时,停止自动轮播,隐藏在图片左右的箭头会显示出来  3. 手动轮播1:鼠标指向图片底部的小标按钮,可以切换对应的图片  4. 手动轮播2:点击左右箭头也可以切换图片 效果图:(PS:用软件捕捉的,不太会弄,感觉图片都失真了) 下面是代码区域: **inde.html部分代码** <div class="box"> <ul class="img">

  • bootstrap与Jquery UI 按钮样式冲突的解决办法

    参考: http://getbootstrap.com/javascript/ 今天在写页面的时候, 遇到一个问题, 页面上 要同时使用Jquery UI的弹出框, 又要用 bootstrap 的popover 结果, 弹框的button 就变成这个样子了. 网上查了下, 需要在JS开始的地方 添加两行代码. bootstrapButton = $.fn.button.noConflict(); $.fn.bootstrapBtn = bootstrapButton; 添加完, 刷新页面就正常了

  • jQuery中的AjaxSubmit使用讲解

    最近在使用ajaxForm,随便把使用方法记下下来,以便以后回顾. 1 ,引入依赖脚本 <script type="text/javascript" src="/js/jquery/jquery.form.js"></script> //ajaxForm 依赖脚本 <script type="text/javascript" src="/js/jquery/jquery-1.8.0.min.js"

  • jquery不支持toggle()高(新)版本的问题解决

    在js代码中引入以下代码,让高版本的jquery兼容toggle事件.代码如下: /** * Replacement for toggle */ jQuery.fn.toggle = function( fn, fn2 ) { // Don't mess with animation or css toggles if ( !jQuery.isFunction( fn ) || !jQuery.isFunction( fn2 ) ) { return oldToggle.apply( this,

  • jQuery css() 方法动态修改CSS属性

    我们先来看个实例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>添加和删除类</title> <style> div{width: 500px;height: 500px;background: #1c94c4;} button{width: 80px;height: 40px;margin

  • jquery attr()设置和获取属性值实例教程

    语法: 1.attr("属性名"): //获取属性的值(取得第一个匹配元素的属性.通过这个方法可以方便的从第一个匹配元素中获取一个属性的值.如果元素没有相应属性,则返回undefined) 2.attr("属性名","属性值"); //设置属性的值(为所有匹配的元素设置一个属性值) 3.attr("属性名","函数值"); //设置属性的函数值(为所有匹配的元素设置一个计算的属性值.不提供值,而是提供一个函

  • jQuery实现移动端手机商城购物车功能

    购物车数量加减 右加号 $(".jiahao").click(function() { var t = $(this).siblings().find("input");//取到数量 t.val(parseInt(t.val()) + 1);//parseInt()解析input一个字符串,返回一个整数 heji();//调用后面计算的函数 }) 左减号 $(".jianhao").click(function() { var t = $(thi

  • jQuery 特性操作详解及实例代码

    前面的话 每个元素都有一个或者多个特性,这些特性的用途就是给出相应元素或者其内容的附加信息.操作特性的DOM方法主要有3个:getAttribute()方法.setAttribute()方法和removeAttribute()方法,而在jQuery中用一个attr()与removeAttr()就可以全部搞定了,包括兼容问题.本文将介绍jQuery中的特性操作 获取特性 jQuery中用attr()方法来获取和设置特性,attr是attribute(特性)的缩写,在jQuery DOM操作中会经常

  • jQuery自定义插件详解及实例代码

     jQuery自定义插件 jQuery是一个功能强大的库,提供了开发JavaScript项目所需的所有核心函数.然而,有时候我们还是需要使用自定义代码来扩展这些核心函数来提高开发效率. jQuery库是为了加快JavaScript的开发速度而设计的,通过简化编写JavaScript的方式,减少代码量. jQuery编写插件有两种方式 1.添加jQuery对象级别的插件,原理是给jQuery类添加方法. 写法如下: (function($){ $.fn.extend({ 函数名:function(

  • jQuery grep()方法详解及实例代码

    什么是jQuery.grep()? jQuery.grep()是一个查找满足过滤函数的数组元素的函数.原始数组不受影响,返回值为数组. 用法介绍: 写法: jQuery.grep( array, function(elementOfArray, indexInArray) [, invert ] ) 参数介绍: array 类型: Array 用于查询元素的数组. function(elementOfArray, indexInArray) 类型: Function() 该函数来处理每项元素的比

  • Sequelize 常用操作详解及实例代码

    Sequelize 常用操作demo 链接 var Sequelize = require('sequelize'); var sequelize = new Sequelize('nodejs', 'root', '', {host : '127.0.0.1', port : '3306', dialect : 'mysql'}); 查询 Task.findAll({limit : 10, age:{gt:3},order : 'id asc'}, {raw : true, logging :

  • MySQL 序列 AUTO_INCREMENT详解及实例代码

    MySQL 序列 AUTO_INCREMENT详解及实例代码 MySQL序列是一组整数:1, 2, 3, ...,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现. 本章我们将介绍如何使用MySQL的序列. 使用AUTO_INCREMENT MySQL中最简单使用序列的方法就是使用 MySQL AUTO_INCREMENT 来定义列. 实例 以下实例中创建了数据表insect, insect中id无需指定值可实现自动增长. mysql>

  • jQuery数组处理详解(含实例演示)

    1. $.each(array, [callback]) 遍历[常用] 解释: 不同于例遍 jQuery 对象的 $().each() 方法,此方法可用于例遍任何对象(不仅仅是数组哦~). 回调函数拥有两个参数:第一个为对象的成员或数组的索引, 第二个为对应变量或内容. 如果需要退出 each 循环可使回调函数返回 false, 其它返回值将被忽略. each遍历,相信都不陌生,在平常的事件处理中,是for循环的变体,但比for循环强大.在数组中,它可以轻松的攻取数组索引及对应的值.例: 复制代

  • JS 实现计算器详解及实例代码(一)

    Javascript 实现计算器: 系列文章: JS 实现计算器详解及实例代码(一) Javascript 实现计算器时间功能详解及实例(二) 小型JavaScript计算器 自己寻思出的解决方案,比较笨拙的方法,虽然完成了但是还有不少bug,用的方法也不是最有效的,基本功能算是完成了,一些小的细节地方也考虑到了,但是还有其他的细节需要处理. 总体设计思路是,先画草图 -> 设计UI -> 编写UI代码 -> 编写CSS -> 编写JS逻辑代码: 面板(main-board) 面板

  • LintCode 堆化详解及实例代码

    LintCode 堆化详解及实例代码 给出一个整数数组,堆化操作就是把它变成一个最小堆数组. 对于堆数组A,A[0]是堆的根,并对于每个A[i],A [i * 2 + 1]是A[i]的左儿子并且A[i * 2 + 2]是A[i]的右儿子. 样例 给出 [3,2,1,4,5],返回[1,2,3,4,5] 或者任何一个合法的堆数组 挑战 O(n)的时间复杂度完成堆化 说明 什么是堆? 堆是一种数据结构,它通常有三种方法:push, pop 和 top.其中,"push"添加新的元素进入堆,

  • MyBatis获取数据库自生成的主键Id详解及实例代码

    MyBatis获取数据库自生成的主键Id详解及实例代码 在使用MySQL数据库时我们一般使用数据库的自增主键自动产生主键.如果在插入主表时,我们需要同时插入从表的数据,这时我们通常需要知道主表插入时自动产生的主键Id值. 下面介绍使用MyBatis进行插入时,如何同时获取数据库自生成的主键: 1.XML配置文件 <insert id="insert" parameterType="Person" useGeneratedKeys="true"

  • Java 两种延时thread和timer详解及实例代码

    Java 两种延时thread和timer详解及实例代码 在Java中有时候需要使程序暂停一点时间,称为延时.普通延时用Thread.sleep(int)方法,这很简单.它将当前线程挂起指定的毫秒数.如 try { Thread.currentThread().sleep(1000);//毫秒 } catch(Exception e){} 在这里需要解释一下线程沉睡的时间.sleep()方法并不能够让程序"严格"的沉睡指定的时间.例如当使用5000作为sleep()方法的参数时,线 程

随机推荐