jQuery的属性操作

Posted Qingqiu_Gu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jQuery的属性操作相关的知识,希望对你有一定的参考价值。

jQuery的属性操作模块分为四分部分:

  1,html属性操作:是对HTML文档中的属性进行读取,设置和移除操作。如:attr(),removeattr()

  2,DOM属性操作:对DOM元素的属性进行读取,设置和移除操作。如:prop(),removeProp()

  3,类样式操作:是指对DOM属性className进行添加,移除操作。如:addClass(),removeClass(),toggleClass()

  4,值操作:是对DOM属性value进行读取和设置操作。如:html(),text(),val()

attr():

  设置属性值或者返回被选元素的属性值:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript" src="../../jquery-3.3.1.js"></script>
    <script type="text/javascript">
        $(function(){
            var id = $(div).attr(id);
            console.log(id); //box
            var cla = $(div).attr(class);
            console.log(cla);//clas
            $(div).attr(id,box1);
            $(div).attr(class,clas1);
            console.log($(div)[0]); //<div id="box1" class="clas1"></div>

        })
    </script>
</head>
<body>
    <div id="box" class="clas"></div>
</body>
</html>

removeAttr():

  移除属性:

$(‘div‘).removeAttr(‘id‘);
//移除单个属性
$(‘div‘).removeAttr(‘id class‘);
//移除多个属性。

prop():

  prop()方法设置或返回被选元素的属性和值。

  当该方法用于返回属性值时,则返回第一个匹配的元素的值。

  当该方法用于设置属性时,则为匹配元素集合设置一个或多个属性/值对/

返回属性的值:

$(selector).prop(property)

设置属性和值:

$(selector).prop(property,value)

设置多个属性和值:

$(selector).prop({property:value, property:value,...})

关于attr()和prop()的区别:

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript" src="../../jquery-3.3.1.js"></script>
    <script type="text/javascript">
        $(function(){
            //获取第一个input
            var el = $(input).first();
            console.log(el.attr(style));
            //因为attr是获取这个对象属性节点的值,若是没有就输出undefiend;
            console.log(el.prop(style));
            // 输出CSSStyleDeclaration对象,对于一个DOM对象,是具有原生的style对象属性的,所以输出了style对象
            console.log(document.getElementById(test).style);

            $(button).click(function(){
                alert(el.prop(checked) ? :);
            });
        });
    </script>
</head>
<body><input type="radio" id="test" name="sex" checked /><input type="radio" id="test2" name="sex"/>
    <button>提交</button>
</body>
</html>

 

什么时候使用attr(),什么时候使用prop():

  在遇到要获取或设置checked,selected,readonly和disabled等属性时,用prop方法显然更好。

  其他则使用attr();

 

addClass(添加多个类名),removeClass()删除类名:

  为每个匹配的元素添加指定的类名:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript" src="../../jquery-3.3.1.js"></script>
    <script type="text/javascript">
        $(function(){
            $(div).addClass(box);
            console.log($(div)[0]); //<div class="box"></div>
            //添加多个类名
            $(div).addClass(box1 box2);
            //<div class="box box1 box2"></div>
            $(div).removeClass(box); //<div class="box1 box2"></div>
            //移除全部的类名
            $(div).removeClass(); //<div class=""></div>
        })
    </script>
</head>
<body>
    <div></div>

</body>
</html>

可以通过添加删除类名,来实现元素的显示隐藏:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        .active{
            color:red;
        }
    </style>
    <script type="text/javascript" src="../../jquery-3.3.1.js"></script>
    <script type="text/javascript">
        $(function(){
            var tag = true;
            $(span).click(function(){
                if(tag){
                    $(span).removeClass(active);
                    tag = false;
                }else{
                    $(span).addClass(active);
                    tag = true;
                }
            })
        })
    </script>
</head>
<body>
    <span class = ‘active‘>你好</span>
</body>
</html>

案例:

技术分享图片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        .active{
            color:red;
        }
    </style>
    <script type="text/javascript" src="../../jquery-3.3.1.js"></script>
    <script type="text/javascript">
        $(function(){
            $(ul li).click(function(){
                $(this).addClass(active).siblings(li).removeClass("active");
            })
        })
    </script>
</head>
<body>
    <ul>
        <li class="item">张三</li>
        <li class="item">李四</li>
        <li class="item">王五</li>
    </ul>
</body>
</html>
View Code

toggleClass:

  如果存在就删除一个类,若是不存在就添加一个类。

技术分享图片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
        
        <style type="text/css">
        .active{
        color:red;
        }
    </style>
    <script type="text/javascript" src="../../jquery-3.3.1.js"></script>
    <script type="text/javascript">
        $(function(){
            $(ul li).click(function(){
                //动态的切换class类名
                $(this).toggleClass(active).siblings(li).removeClass("active");
            })
        })
    </script>
</head>
<body>
    <ul>
        <li class="item">张三</li>
        <li class="item">李四</li>
        <li class="item">王五</li>
    </ul>
</body>
</html>
View Code

html:

  html()是获取选中标签元素中的所有内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript" src="../../jquery-3.3.1.js"></script>
    <script type="text/javascript">
        $(function(){
            console.log($(body).html());
        })
    </script>
</head>
<body>
    <ul>
        <li class="item">张三</li>
        <li class="item">李四</li>
        <li class="item">王五</li>
    </ul>
</body>
</html>

技术分享图片

设置值:设置该元素的所有内容会替换掉标签中原来的内容。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript" src="../../jquery-3.3.1.js"></script>
    <script type="text/javascript">
        $(function(){
            // console.log($(‘body‘).html());
            $(div).html(<a href="http://www.baidu.com">百度一下</a>);
        })
    </script>
</head>
<body>
    <div>
        <p>你好</p>
        <p>你好</p>
        <a href=""></a>
    </div>
</body>
</html>

效果图:

技术分享图片

 

text:

获取值:

  text() 获取匹配元素包含的文本内容:
语法:

$(‘#box‘).text();

设置值:

$(‘#box‘).text(‘<a href="https://www.baidu.com">百度一下</a>‘);

注意:值为标签的时候,不会被渲染为标签元素,只会被当成值渲染到浏览器中。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript" src = "../../jquery-3.3.1.js"></script>
    <script type="text/javascript">
        $(function(){
            console.log($(ul).text());
            $(p).text(<a href="https://www.baidu.com">百度一下</a>);
        })
    </script>
</head>
<body>
    <div>
        <ul>
            <li>111</li>
            <li>222</li>
            <li>333</li>
        </ul>
        <p>你好</p>
        <p>你好</p>

    </div>
</body>
</html>

效果图:

技术分享图片

技术分享图片

 

val:

获取值:

val() 用于表单控件中获取值,比如input textarea select等。

设置值:

$(‘input‘).val(‘设置了表单控件中的值‘);
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript" src="../../jquery-3.3.1.js"></script>
    <script type="text/javascript">
        $(function(){
            //获取单选框中被选中的value值。
            console.log($(input[type=radio]:checked).val()); // 11
            //复选框被选中的value,获取的是第一个被选中的值
            console.log($(input[type=checkbox]:checked).val());
            //下拉列表被选中的值
            var obj = $(#timespan option:selected);
            var time = obj.val();
            console.log(time);
            var time_text = obj.text();
            console.log("val:"+time +"text"+time_text);
            //获取文本框中的值
            console.log($(input[type=text]).val());


            //设置单选按钮和多选按钮被选中项,后面的等级高过前面的。
            $(input[type=radio]).val([11]);
            $(input[type=radio]).val([22]);
            $(input[type=checkbox]).val([a,b]);
            $(select).val([1,2,3]);
        })
    </script>
</head>
<body>
    <div>
    <form>
        <input type="radio" name="sex" value="11"  /><input type="radio" name="sex" value="22"/><input type="radio" name="sex" value="33" checked="    "/>gay
        <input type="checkbox" value="a" checked=""/ >吃饭
        <input type="checkbox" value="b" checked="" />睡觉
        <input type="checkbox" value="c" checked="" />打豆豆

        <!-- 下拉列表 option标签内设置selected属性,表示选中 -->
        <select name="timespan" id="timespan" class="wdate" size="2" multiple="">
            <option value="1">8:00-8:30</option>  
            <option value="2">8:30-9:00</option>  
            <option value="3" selected="">9:00-9:30</option>
        </select>
        <input type="text" name="" id="" value="111"/>
        <input type="submit" name="">
    </form>
    </div>
</body>
</html>

jQuery的文档操作:

插入操作:

父元素.append(子元素)

  追加某元素,在父元素中添加新的子元素。子元素可以为:stirng | element(js对象) | jquery元素

var oli = document.createElement(‘li‘);
oli.innerHTML = ‘哈哈哈‘;
$(‘ul‘).append(‘<li>1233</li>‘);
$(‘ul‘).append(oli);
$(‘ul‘).append($(‘#app‘));

  如果追加的是jquery对象那么这些元素将从原位置上消失。简言之,就是一个移动操作。

子元素.appendTo(父元素):

  追加到某元素 子元素添加到父元素

$(‘<li>天王盖地虎</li>‘).appendTo($(‘ul‘)).addClass(‘active‘)

  要添加的元素同样既可以是stirng 、element(js对象) 、 jquery元素

父元素.prepend(子元素):前置添加, 添加到父元素的第一个位置

$(‘ul‘).prepend(‘<li>我是第一个</li>‘)

子元素.prependTo(父元素):子元素添加到父元素的第一个位置

$(‘<a href="http//:www.baidu.com">百度一下</a>‘).prependTo(‘ul‘)

父元素.after(子元素);
子元素.inserAfter(父元素)

在匹配元素后插入内容:

$(‘.box‘).after(‘<p>段落1</p>‘);
$(‘<p>段落2</p>‘).insertAfter(‘ul‘);

父元素.before(子元素);
子元素.inserBefore(父元素):

在匹配元素前插入内容。

$(‘ul‘).before(‘<h1>第一第一</h1>‘);
$(‘<h2>第二第二</h2>‘).insertBefore(‘.box‘);

克隆操作:

$(选择器).clone();

$(‘button‘).click(function() {

  // 1.clone():克隆匹配的DOM元素
 // 2.clone(true):元素以及其所有的事件处理并且选中这些克隆的副本(简言之,副本具有与真身一样的事件处理能力)
  $(this).clone(true).insertAfter(this);
})

修改操作:

$(selector).replaceWith(content);

将所有匹配的元素替换成指定的string,js对象,jquery对象。

//将所有的h5标题替换为a标签
$(‘h5‘).replaceWith(‘<a href="#">hello world</a>‘)
//将所有h5标题标签替换成id为app的dom元素
$(‘h5‘).replaceWith($(‘#app‘));

替换所有。将所有的h2标签替换成p标签

$(‘<br/><hr/><button>按钮</button>‘).replaceAll(‘h4‘)

删除操作:

$(selector).remove(); 

删除节点后,事件也会删除(简言之,删除了整个标签)

$(‘ul‘).remove();

删除节点后,事件会保留:

$(selector).detach(); 
 var $btn = $(‘button‘).detach()
 //此时按钮能追加到ul中
 $(‘ul‘).append($btn)

清空选中元素中的所有后代节点:

$(selector).empty(); 
//清空掉ul中的子元素,保留ul
$(‘ul‘).empty()
技术分享图片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript" src="../../jquery-3.3.1.js"></script>
    <script type="text/javascript">
        $(function(){
            var oli = document.createElement(li);
            oli.innerHTML = lv;
            //添加字符串
            $(ul).append(<li>顾清秋</li>);
            //添加js对象
            $(ul).append(oli);
            //添加jquery对象
            $(ul).append($(.li1));

            //父元素在第一个位置添加子元素
            $(ul).prepend(<li>我成为了第一个</li>)

            //子元素添加到父元素的第一个位置
            $(<a href="http//:www.baidu.com">百度一下</a>).prependTo(ul)
            $(.box).after(<p>段落1</p>);
            $(<p>段落2</p>).insertAfter(ul);

            $(ul).before(<h1>第一第一</h1>);
            $(<h2>第二第二</h2>).insertBefore(.box);

            $(button:eq(0)).click(function(){
                $(this).clone(true).insertAfter(this);
            });
            $(h2).replaceWith(<a href="#">hello world</a>);
            $(<p>顾清秋</p>).replaceAll(h1);

            //移除所有button.也有返回值,也可追加到一个位置,但是不具有功能。
            //$(‘button‘).remove();
            //也是移除button,但是保留信息,有返回值可以追加到一个位置。依然具有功能。
            // var $btn = $(‘button‘).detach();
            // $(‘ul‘).append($btn);
            $(#clear).click(function(){
                $(ul).empty();
            })
        })
    </script>
</head>
<body>
    <ul>
        
    </ul>
    <div class="box">box</div>
    <ol>
        <li class="li1">顾小白</li>
        <li>111</li>
        <li>222</li>
        <li>333</li>
    </ol>
    <button>操作</button>
    <button id="clear">清屏</button>
</body>
</html>
例子代码

 




以上是关于jQuery的属性操作的主要内容,如果未能解决你的问题,请参考以下文章

在 sapui5 片段的 xml 文件中使用 jquery

Jquery插件 easyUI属性汇总

Visual Studio 2012-2019的130多个jQuery代码片段。

jQuery应用 代码片段

很实用的JQuery代码片段(转)

使用 NodeJS 和 JSDOM/jQuery 从代码片段构建 PHP 页面