jQuery的属性与样式


之.attr()与.removeAttr()

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title>jQuery的属性与样式之.attr()与.removeAttr()</title>
    <style>
        input {
            display    : block;
            margin     : 10px;
            padding    : 10px;
            background : #bbffaa;
            border     : 1px solid #ccc;
        }
    </style>
    <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>

<body>
<h2>.attr()与.removeAttr()</h2>
<h3>.attr</h3>
<p>

    一、jQuery中用attr()方法来获取和设置元素属性。
    attr()有4个表达式:
    1,attr(属性名):获取属性的值;
    2,attr(属性名,属性值):设置属性的值;
    3,attr(属性名,函数名):设置属性的函数值;
    4,attr(属性名1:属性值1,属性名2:属性值2);
    二、removeAttr()删除方法
    .removeAttr(属性名):为匹配的元素集合中的所有元素移除属性;
    三、区分attribute和property
    1,Attribute:特性,dom节点自带的属性,如id,class,title,align等;
    2,Property:属性,是dom元素作为对象,其附加的内容,如tagName,nodeName,弄的T一盆等;
    3,获取Attribute用attr,获取Property用prop;

</p>
<form>
    <input type="text" value="设置value" />
    <input type="text" value="获取value"/>
    <input type="text" value="回调拼接value" />
    <input type="text" value="删除value" />
</form>

<script type="text/javascript">
    //找到第一个input,通过attr设置属性value的值
    $('input:first').attr('value','.attr( attributeName, value )')
</script>

<script type="text/javascript">
    //找到第二个input,通过attr获取属性value的值
    $('input:eq(1)').attr('value')
</script>

<script type="text/javascript">
    //找到第三个input,通过使用一个函数来设置属性
    //可以根据该元素上的其它属性值返回最终所需的属性值
    //例如,我们可以把新的值与现有的值联系在一起:
    $('input:eq(2)').attr('value',function(i, val){
        return '通过function设置' + val
    })
</script>

<script type="text/javascript">
    //找到第四个input,通过使用removeAttr删除属性
    $('input:eq(3)').removeAttr('value')
</script>


</body>

</html>

之.html()与.text()

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title>jQuery的属性与样式之html()及.text()</title>
    <link rel="stylesheet" href="choose.css" type="text/css">
    <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>

<body>

<h3>.html()与.text()</h3>

.html() 与 .text()
1,.html()读取修改元素的html结构;
2,.text()读取修改元素的文本内容;
3,.html()方法内容使用的是DOM的innerHTML()属性来处理的。
这个操作是针对整个HTML内容,不仅仅只是文本内容;
4,.text()结果返回一个字符串,包含所有匹配元素的合并文本;


<div class="left first-div">
    <div class="div">
        <a>:first-child</a>
        <a>第二个元素</a>
        <a>:last-child</a>
    </div>
    <div class="div">
        <a>:first-child</a>
        <a>第二个元素</a>
        <a>:last-child</a>
    </div>
</div>

<h4>显示通过html方法获取到的内容</h4>
<p></p>

<h4>显示通过text方法获取到的内容</h4>
<p></p>


<script type="text/javascript">
    //显示出html方法获取到的内容
    //.html()是整个html文档结构
    $('p:first').html( $(".first-div").html() )
</script>


<script type="text/javascript">
    //显示出text方法获取到的内容
    //.text()是文本内容的合集
    $('p:last').text( $(".first-div").text() )
</script>


<script type="text/javascript">
    //通过.text()方法替换文本内容
    $(".left a:first").text('替换第一个a元素的内容')
</script>


<script type="text/javascript">
    //通过.html()方法替换html结构
    $(".left div:first").html('整个div的子节点都被替换了')
</script>


<script type="text/javascript">
    //通过.text()的回调,获取原本的内容,修改,在重新赋值
    $(".left a:first").text(function(idnex,text){
        return '增加新的文本内容' + text
    })
</script>



</body>

</html>

之.val()

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title>jQuery的属性与样式之.val()</title>
    <style>
        p {
            color: red;
            margin: 4px;
        }

        b {
            color: blue;
        }
    </style>
    <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>

<body>
<h3>.val()</h3>
1,.val()方法:用于处理表单元素的值,如input、select、textarea;
只能用在表单元素上;
2,.text()方法:用来读取元素的纯文本内容,包括后代元素;
不能用在表单元素上;
3,.html()和.val()方法:若是用在多个元素上时,只读取第一个元素;
4,.text()方法:若是用在多个元素上时,将会读取所有选中元素的文本内容;
<br>

<select id="single">
    <option selected="selected">单选前端</option>
    <option>单选后端</option>
</select>
<select id="multiple" multiple="multiple">
    <option selected="selected">多选上面</option>
    <option>多选中间</option>
    <option selected="selected">多选下面</option>
</select>
<input type="text" value="click a button" />
<p id="p1"></p>
<p id="p2"></p>


<script type="text/javascript">
    //单个select,返回第一个
    $("#p1").text( $("#single").val() )
</script>

<script type="text/javascript">
    //多个select被选择,返回["上面", "下面"]
    $("#p2").text( $("#multiple").val() )
</script>


<script type="text/javascript">
    //选择一个表单,修改value的值
    $("input[type='text']").val('修改表单中的内容')
</script>


</body>

</html>

之增加样式.addClass()

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="3-4.css" type="text/css">
    <title>jQuery的属性与样式之增加样式.addClass()</title>
    <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>
<body>
1,.addClass(className)方法作用:为每个匹配元素动态增加一个或多个class类名;
2,注意:.addClass(className)方法不会替换一个样式类名,
    它只是简单的添加一个类名到元素上;

<h2>.addClss()方法</h2>
<div class="left">
    <div class="xiao">
        <p>newClass</p>
    </div>
    <div class="xiao">
        <p>newClass</p>
    </div>
</div>
<div class="right">
    <div class="aa bb boke">
        <article>
            <p>bokeClass</p>
        </article>
    </div>
    <div class="bb cc boke">
        <article>
            <p>bokeClass</p>
        </article>
    </div>
</div>

<script type="text/javascript">
    $('.left div').addClass('newClass');
</script>

<script type="text/javascript">
    $('div').addClass(function (index, className) {
        if(-1!==className.indexOf('boke')){
            $(this).addClass('bokeClass');
        }
    });
</script>

</body>
</html>

之删除样式 .removeClass()

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title></title>
    <style>
        .left,
        .right {
            width: 300px;
            height: 120px;
        }

        .left div,
        .right div {
            width: 100px;
            height: 90px;
            padding: 5px;
            margin: 5px;
            float: left;
            border: 1px solid #ccc;
        }

        .newClass{
            background: #bbffaa;
        }

        .imoocClass{
            background: red;
        }

    </style>
    <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>

<body>
<h2>.removeClass()方法</h2>

1,removeClass([className]):每个匹配元素移除一个或多个用空格隔开的类名;
2,removeClass(function(index,class)):一个函数,返回一个或多个将要被移除的类名;

<div class="left">
    <div class="aaron newClass">
        <p>newClass</p>
    </div>
    <div class="aaron newClass">
        <p>newClass</p>
    </div>
</div>
<div class="right">
    <div class="aa bb imoocClass">
        <article>
            <p>imoocClass</p>
        </article>
    </div>
    <div>
        <article>
            <p>imoocClass</p>
        </article>
    </div>
</div>

<script type="text/javascript">
    //class=left下div元素删除newClass样式
    $('.left div').removeClass('newClass')
</script>


<script type="text/javascript">
    //.removeClass() 方法允许我们指定一个函数作为参数,返回将要被删除的样式
    $('.right > div:first').removeClass(function(index,className){

        //className = aa bb imoocClass
        //把div的className赋给下一个兄弟元素div上作为它的class
        $(this).next().addClass(className)

        //删除自己本身的imoocClass
        return 'imoocClass'
    })


</script>



</body>

</html>

之切换样式 .toggleClass()

<!DOCTYPE HTML>
<html>

<head>
    <meta charset="utf-8">
    <title>jQuery切换样式.toggleClass()</title>
    <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
    <style type="text/css">
        body,
        table,
        td
        {
            font-family: Arial, Helvetica, sans-serif;
            font-size: 12px;
        }

        .h {
            background: #f3f3f3;
            color: #000;
        }

        .c {
            background: #ebebeb;
            color: #000;
        }
    </style>
</head>

<body>
<h2>隔行换色</h2>
<h4>.toggleClass(className)和.toggleClass(className,switch)</h4>
<table id="table" width="50%" border="0" cellpadding="3" cellspacing="1">
    <tr>
        <td>jQuery快到碗里来!</td>
        <td>jQuery快到碗里来!</td>
    </tr>
    <tr>
        <td>jQuery快到碗里来!</td>
        <td>jQuery快到碗里来!</td>
    </tr>
    <tr>
        <td>jQuery快到碗里来!</td>
        <td>jQuery快到碗里来!</td>
    </tr>
    <tr>
        <td>jQuery快到碗里来!</td>
        <td>jQuery快到碗里来!</td>
    </tr>
    <tr>
        <td>jQuery快到碗里来!</td>
        <td>jQuery快到碗里来!</td>
    </tr>
</table>
<script type="text/javascript">
    //给所有的tr元素加一个class="c"的样式
    $("#table tr").toggleClass("c");
</script>
<script type="text/javascript">
    //给所有的偶数tr元素切换class="c"的样式
    //所有基数的样式保留,偶数的被删除
    $("#table tr:odd").toggleClass("c");
</script>
<script type="text/javascript">
    //第二个参数判断样式类是否应该被添加或删除
    //true,那么这个样式类将被添加;
    //false,那么这个样式类将被移除
    //所有的奇数tr元素,应该都保留class="c"样式
    $("#table tr:even").toggleClass("c", true); //这个操作没有变化,因为样式已经是存在的
</script>
</body>

</html>

之样式操作 .css()

<!DOCTYPE html>
<html lang="en">
<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" href="3-7.css" type="text/css">
    <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
    <title>jQuery样式操作.css()</title>
</head>
<body>

<h3>获取css属性</h3>
<div class="first">获取颜色</div>
<p></p>
<div class="second">获取文字尺寸</div>
<p></p>
<div class="third">获取宽高尺寸</div>
<p></p>

<script type="text/javascript">
    //background-color:blue; => rgb(0, 0, 255)
    //颜色都会转化成统一的rgb标示
    $('p:eq(0)').text( $('.first').css('background-color'))

</script>

<script type="text/javascript">
    //字体大小都会转化成统px大小 em=>px
    $('p:eq(1)').text( $('.first').css('font-size') )
</script>

<script type="text/javascript">
    //获取尺寸,传入CSS属性组成的一个数组
    //{width: "60px", height: "60px"}
    var value = $('.first').css(['width','height']);
    //因为获取的是一个对象,取到对应的值
    $('p:eq(2)').text( 'widht:' + value.width +  ' height:' +value.height )
</script>

</br></br></br>
<h3>设置css属性</h3>
<div class="fourth">设置颜色设置文字尺寸</div>
<div class="fifth">设置颜色设置文字尺寸</div>
<div class="sixth">通过回调设置新的值</div>
<div class="seventh">同时设置多少个样式</div>

<script type="text/javascript">
    //多种写法设置颜色
    $('.fourth').css('background-color','red');
    $('.fifth').css('backgroundColor','yellow');
</script>

<script type="text/javascript">
    //多种写法设置字体大小
    $('.fourth').css('font-size','15px');
    $('.fifth').css('font-size','0.9em');
</script>


<script type="text/javascript">
    //获取到指定元素的宽度,在回调返回宽度值
    //通过处理这个value,重新设置新的宽度
    $('.sixth').css('width',function(index,value){
        value = value.split('px');
        return (Number(value[0])+50)+value[1];
    })
</script>

<script type="text/javascript">
    //合并设置,通过对象传设置多个样式
    $('.seventh').css({
        'font-size':'15px',
        'background-color':'green',
        'border':'1px solid gray'
    })
</script>


</body>

</html>

之元素的数据存储

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jQuery元素的数据存储</title>
    <style type="text/css">
        .left,.right {
            width: 300px;
            height: 120px;
        }
        .left div,.right div {
            width: 100px;
            height: 90px;
            padding: 5px;
            margin: 5px;
            float: left;
            border: 1px solid #cccccc;
        }
        .left div {
            background: #bbffdd;
        }
        .right div {
            background: #ddffbb;
        }

    </style>
    <script src="http://libs.baidu.com/jquery/1.9.1/jquery.js"></script>
</head>
<body>
<h2>jQuery.data()静态方法</h2>
<div class="left">
    <div class="inner">
        <p>click</p>
        <p>jQuery.data</p>
    </div>
    <div><span></span></div>
</div>
<h2>.data()实例方法</h2>
<div class="right">
    <div class="inner">
        <p>click</p>
        <p>.data</p>
    </div>
    <div><span></span></div>
</div>

<script type="text/javascript">
    $('.left').click(function () {
        var ele = $(this);
        //通过$.data方式设置数据
        $.data(ele,"a","data test");
        $.data(ele,"b",{name:"小"});
        //通过$.data方式取出数据
        var reset = $.data(ele,"a") + "<br>" + $.data(ele,"b").name;
        ele.find('span').append(reset);
    });
</script>
<script type="text/javascript">
    $('.right').click(function () {
        var ele = $(this);
        //通过.data方式设置数据
        ele.data("a","data test");
        ele.data("b",{name:"小"});
        //通过.data方式取出数据
        var reset = ele.data("a") + "<br>" + ele.data("b").name;
        ele.find('span').append(reset);

    });
</script>


</body>
</html>