jQuery 属性操作

标准属性

prop()

   获取与设置jQuery对象中元素的标准属性值

   标准属性是指一些DOM元素自带的属性或window对象,如<a>titlehreftarget等等

   可以单个设置标准属性的值,也可以使用{}一次性设置多个标准属性的值

<body>
        <a>博客园</a>
</body>
<script src='https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js'></script>
<script>

        "use strict";
        $("a").prop({"href":"https://www.cnblogs.com/","title":"博客园主页"});  // 设置多个
        $("a").prop("target","_blank");  // 单一设置

        // <a href="https://www.cnblogs.com/" title="博客园主页" target="_blank">博客园</a>
        
</script>

removeProp()

   将一个标准属性的值设置成undefined

   个人测试:该方法只在jQuery1.x版本中有效,新的标准属性值为undefined

   1.6新增,23中设置均无效

<body>
        <a>这是一个链接</a>
        <button type="button">点我添加标准属性</button>
        <button type="button">点我删除标准属性</button>
</body>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>

        "use strict";

        
        $("button").eq(0).on("click", (event) => {
                $("a").prop("title","已添加");
                // <a title="已添加">这是一个链接</a>
        });

        $("button").eq(1).on("click", (event) => {
                $("a").removeProp("title");
                // <a title="undefined">这是一个链接</a>
        });

</script>

特征属性

attr()

   获取与设置jQuery对象中元素的特征属性值

   特征属性是值一些用户自定义的属性,在设置时应该注意与标准属性的命名冲突问题

   可以单个设置特征属性的值,也可以使用{}一次性设置多个特征属性的值

<body>
        <div></div>
</body>
<script src='https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js'></script>
<script>

        "use strict";
        $("div").attr({"data-color":"red","data-size":"w:100,h:50"});  // 设置多个
        $("div").attr("data-show","true");  // 单一设置

        // <div data-color="red" data-size="w:100,h:50" data-show="true"></div>
        
</script>

removeAttr()

   将一个特征属性及其属性值删除

<body>
        <a>这是一个链接</a>
        <button type="button">点我添加标准属性</button>
        <button type="button">点我删除标准属性</button>
</body>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>

        "use strict";

        
        $("button").eq(0).on("click", (event) => {
                $("a").attr("data-linkName","链接");
                // <a data-linkname="链接">这是一个链接</a>
        });

        $("button").eq(1).on("click", (event) => {
                $("a").removeAttr("data-linkName");
                // <a>这是一个链接</a>
        });

</script>

属性集

   建议对特征属性进行特殊命名操作,如添加上data-前缀,与标准属性区分。

   如果您这样做,可以利用属性集对特征属性进行更加方便的管理。

data()

   所有的以data-开头的特征属性都会存放进行data()属性集中,我们可以通过data()进行获取与设置其属性值。

<body>
        <div class="show top" data-color="red" data-font_size="15"></div>
</body>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>

        "use strict";

        console.log($("div").data()); // {font_size: 15, color: "red"}  获取所有
        
        console.log($("div").data("color")); // red 获取一个

        $("div").data("font_size","100"); // 设置一个属性集属性 这不会在HTML文档中显示。但是确实已经设置了

        console.log($("div").data());  // {font_size: "100", color: "red"}

        $("div").data({"font-size":"120","color":"black"}); // 设置多个 同样的不会再HTML文档中显示

        console.log($("div").data());  // {{font_size: "100", color: "black", fontSize: "120"}

</script>

removeData()

   删除属性集中的一个属性。不能是由HTML文档上设置的特征属性,必须由data()所设置

<body>
        <div></div>
        <button id="btn1">向 div 元素添加数据</button><br />
        <button id="btn2">从 div 元素删除数据</button>

</body>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>

        "use strict";
        $(document).ready(function () {
                $("#btn1").click(function () {
                        $("div").data("greeting", "Hello World");  // 必须由data所设置
                        alert("Greeting is: " + $("div").data("greeting"));
                });

                $("#btn2").click(function () {
                        $("div").removeData("greeting");
                        alert("Greeting is: " + $("div").data("greeting"));
                });
        });

</script>

节点内容

html()

   获取jQuery对象DOM标签中的HTML内容,并且也可以向标签中添加HTML内容,同时触发浏览器的解析器重绘DOM。

   与JavaSctip中的innerHTML属性效果相同。

<body>
        <div><span>获取</span></div>
</body>
<script src='https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js'></script>
<script>

        "use strict";
        console.log($("div").html()); // 获取内容  <span>获取</span>
        $("div").html("<mark>设置</mark>"); // 设置内容
        console.log($("div").html()); // 获取内容  <mark>设置</mark>

</script>

text()

   访问或添加文本内容到jQuery对象里的元素中。

   与JavaScript中的innerTexttextContentd属性效果相同。

   获取时忽略所有标签

   设置时将内容中的标签当文本对待不进行解析

<body>
        <div><span>获取</span></div>
</body>
<script src='https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js'></script>
<script>

        "use strict";
        console.log($("div").text()); // 获取内容  获取
        $("div").text("<mark>设置</mark>"); // 设置内容,会当做普通文本添加,而不是标签元素
        console.log($("div").text()); // 获取内容  <mark>设置</mark>

</script>

表单内容

val()

   获得jQuery对象中第一个元素的当前值,常用于表单标签。

<body>
        <input type="text" value="云崖先生">
</body>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>

        "use strict";

        console.log($(":text").val());  // 云崖先生
        
</script>
posted @ 2020-08-23 22:55  云崖先生  阅读(144)  评论(0编辑  收藏  举报