AI智能
改变未来

【jQuery】属性操作


jQuery属性操作

内容选择器

  • empty: 找到既没有文本内容也没有子元素的指定元素

  • parent: 找到有文本内容或有子元素的指定元素

  • contains: 找到包含指定文本内容的指定元素

  • has: 找到包含指定子元素的指定元素

    <!DOCTYPE html><html lang=\"en\"><head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>内容选择器</title><script src=\"../jquery-3.5.1.js\"></script><style>div{width: 150px;height: 150px;border: 2px solid black;margin-top: 10px;}</style><script>$(function(){// emptyvar $divEmpty = $(\"div:empty\");console.log(\'$divEmpty>>>\', $divEmpty);// parentvar $divParent = $(\'div:parent\');console.log(\'$divParent>>>\', $divParent);// containsvar $divContains = $(\'div:contains(\"第二个div\")\');console.log(\'$divContains>>>\', $divContains);// hasvar $divHas = $(\'div:has(\"p\")\');console.log(\'$divHas>>>\', $divHas);})</script></head><body><div></div><div>第一个div</div><div>第二个div</div><div><span>spanspanspan</span></div><div><p></p></div></body></html>

属性和属性节点

  • 属性:对象里的变量就是属性

    function Dog(){}var dog = new Dog()dog.name = \'哈士奇\';   // 这里的name就是属性console.log(\'name:\', dog.name);

    操作属性的方法:

      通过点设置属性: 对象.属性名 = 值;
    1. 调用属性: 对象.属性名;
dog.name = \'哈士奇\';console.log(\'name:\', dog.name);
  1. 通过[]
      设置属性: 对象[‘属性名’] = 值;
    • 调用属性: 对象[‘属性名’];
dog[\'age\'] = 5;console.log(\'age:\', dog[\'age\']);
  • 属性节点: 在HTML标签中添加的属性就是属性节点

      如<span name=\"hello\"></span>里的name

    • 所有的属性节点都保存在DOM的attributes属性中

    • 操作属性节点:

      设置属性节点:

      DOM元素.setAttribute(\'属性名\', \'值\');
    • 获取属性节点:
      DOM元素.getAttribute(\'属性名\');
    var span = document.getElementsByTagName(\'span\')[0];span.setAttribute(\'name\', \'nonono\');console.log(\'span>>>\',span.getAttribute(\'name\'));
  • 属性和属性节点的区别:任何对象都有属性,只有DOM对象才有属性节点

  • 一. jQuery的attr方法和removeAttr方法

    • attr()

      : 获取或设置属性节点的值

      如果传一个参数代表获取属性节点的值,如果传两个参数代表设置属性节点的值

    • 获取时: 无论找到多少元素,都只会返回第一个元素的属性节点的值
    • 设置时: 找到多少元素就设置多少元素,如果要设置的属性节点不存在,系统会自动新增
    <body><span class=\"span1\" name = \'rpg\'></span><span class=\"span2\" name = \'stg\'></span></body><script>// 获取console.log(\'attr>>>\', $(\'span\').attr(\'class\'));// 设置$(\'span\').attr(\'class\', \'sun\');$(\'span\').attr(\'age\', 66);</script>
  • removeAttr()

    : 删除指定的属性节点

  • 会删除所有找到的属性节点

  • 如果想删除多个属性节点可用空格隔开

  • <body><span class=\"span1\" name = \'rpg\' age=\"6\"></span><span class=\"span2\" name = \'stg\' age=\"6\"></span></body><script>// 删除$(\'span\').removeAttr(\'age\');// 删除多个$(\'span\').removeAttr(\'class name\');</script>

    二. jQuery的prop方法

    • prop方法: 操作属性,特点和attr一样prop方法不仅能操纵属性,还能操作属性节点
  • removeProp: 删除属性特点和reomveAttr一样
  • <html lang=\"en\"><head><meta charset=\"UTF-8\"><title>jQuery的prop方法</title><script src=\"../jquery-3.5.1.js\"></script><script>$(function(){// prop方法: 操作属性特点和attr一样$(\'span\').eq(0).prop(\'demo\',\'233\')$(\'span\').eq(1).prop(\'ash\', \'666\')$(\'span\').eq(2).prop(\'demo\', \'666\')console.log($(\'span\').prop(\'demo\'))// removeProp: 删除属性特点和reomveAttr一样$(\'span\').removeProp(\'demo\')// 操作属性节点console.log($(\'span\').prop(\'class\'))})</script></head><body><span class=\"span1\" name=\'rpg\'></span><span class=\"span2\" name=\'stg\'></span><span class=\"span3\" name=\'stg\'></span></body></html>
    • 关于prop()和attr()分别什么时候用:

      官方推荐在操作属性节点时,具有true 和false 两个属性的属性节点如schecked, selected 或者disabled 使用prop()

    • 其他的使用attr ()

    三. jQuery操作类相关的方法

    • addClass()

      : 添加一个类, 添加多个时中间用空格隔开

    • removeClass()

      : 删除一个类,删除多个用空格隔开

    • toggleClass()

      : 切换类. 有就删除,没有就添加

      <!DOCTYPE html><html lang=\"en\"><head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>jQuery操作类相关的方法</title><script src=\"../jquery-3.5.1.js\"></script><style>.class1{width: 100px;height: 100px;background: aqua;}.class2{width: 50px;height: 50px;border: 10px solid greenyellow;}</style><script>$(function(){var btns = document.getElementsByTagName(\'button\')// addClass() : 添加一个类    添加多个时中间用空格隔开btns[0].onclick = function(){$(\'div\').addClass(\'class1 class2\');}// removeClass() : 删除一个类     删除多个用空格隔开btns[1].onclick = function () {$(\'div\').removeClass(\'class2\');}// toggleClass() : 切换类    有就删除,没有就添加btns[2].onclick = function () {$(\'div\').toggleClass(\'class1 class2\');}})</script></head><body><button>添加</button><button>删除</button><button>切换</button><div></div></body></html>

    四. jQuery文本值相关的方法

    <!DOCTYPE html><html lang=\"en\"><head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>jQuery文本值相关的方法</title><script src=\"../jquery-3.5.1.js\"></script><style>*{margin: 0;padding: 0;}div{margin-top: 10px;width: 100px;height: 100px;border: 2px solid black;}</style><script>$(function(){var btns = document.getElementsByTagName(\'button\');// html: 和原生js里的innerHTML一样btns[0].onclick = function(){$(\"div\").html(\'<p>这是段落<span>内有span</span></p>\');  // 设置html}btns[1].onclick = function () {console.log($(\"div\").html());   // 获取html}// text: 和原生js里的innerText一样btns[2].onclick = function () {$(\"div\").text(\'<p>这里有一段字符串</p>\');   // 设置文本}btns[3].onclick = function () {console.log($(\"div\").text());   // 获取文本}// val: 可以返回任意元素的值,包括select。如果多选,将返回一个数组,其包含所选的值。btns[4].onclick = function () {$(\"input\").val(\'请输入文字....\');   // 设置值}btns[5].onclick = function () {console.log($(\"input\").val());  // 获取值}})</script></head><body><button>设置html</button><button>获取html</button><button>设置text</button><button>获取text</button><button>设置value</button><button>获取value</button><div></div><input type=\"text\"></body></html>

    五. jQuery操作css样式的方法

    • css方法设置有三种方式:

        逐个设置

        $(\'div\').css(\'width\', \'100px\');$(\'div\').css(\'height\', \'100px\');$(\'div\').css(\'background\', \'aqua\');
      1. 链式设置

        $(\'div\').css(\'background\', \'aqua\').css(\'width\', \'50px\').css(\'height\', \'50px\');

        如果设置大于3个,建议分开否则可读性会变差

  • 批量设置

    $(\'div\').css({width : \'200px\',height : \'200px\',background : \'black\'})
      更简单,看上去更直观。推荐使用这种
  • 获取css样式值

    console.log($(\'div\').css(\'width\'));
  • 六. jQuery位置和尺寸的操作方法

    • offset(): 获取或设置元素距离窗口的偏移位

      获取:

      console.log($(\'.box1\').offset().left);
    • 设置:

      $(\'.box2\').offset({left : 50})
  • position(): 获取元素距离定位元素的偏移位,只能获取不能设置

    console.log($(\'.box2\').position().left);
  • 完整代码:

    <!DOCTYPE html><html lang=\"en\"><head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><title>jQuery位置和尺寸的操作方法</title><script src=\"../jquery-3.5.1.js\"></script><style>*{margin: 0;padding: 0;}.box1{width: 150px;height: 150px;background: aquamarine;border: 50px solid rgb(92, 134, 28);margin-left: 100px;position: relative;}.box2{width: 50px;height: 50px;background: gray;position: absolute;left: 50px;top: 50px;}button{margin-top: 10px;}</style><script>$(function(){var btns = document.getElementsByTagName(\'button\');btns[0].onclick = function(){// 获取元素宽度console.log(\'width: \', $(\'.box1\').width())// offset(): 获取或设置元素距离窗口的偏移位$(\'input\').val($(\'.box1\').offset().left); // 获取元素距离窗口的偏移位// position(): 获取元素距离定位元素的偏移位,只能获取不能设置console.log(\'box2PositionLeft: \', $(\'.box2\').position().left);}btns[1].onclick = function () {// 设置元素距离窗口的偏移位$(\'.box2\').offset({left : $(\'input\').val()})}})</script></head><body><div class=\"box1\"><div class=\"box2\"></div></div><button>获取</button><button>设置</button><input type=\"text\"></body></html>
  • 七. jQuery的scrollTop方法

    • 获取和设置滚动的偏移位

      // 获取滚动的偏移位console.log($(\'.text\').scrollTop())// 设置滚动的偏移位$(\'.text\').scrollTop(300)
    • 获取和设置网页滚动偏移位

      // 为了游览器的兼容,要按以下方式写// 获取console.log($(\'html\').scrollTop() + $(\'body\').scrollTop());// 设置$(\'html\').scrollTop(300) + $(\'body\').scrollTop(300);
    赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » 【jQuery】属性操作