原生JS替代jQuery的各种方法汇总

前端发展很快,现代浏览器原生 API 已经足够好用。我们并不需要为了操作 DOM、Event 等再学习一下 jQuery 的 API。同时由于 React、Angular、Vue 等框架的流行,直接操作 DOM 不再是好的模式,jQuery 使用场景大大减少。本项目总结了大部分 jQuery API 替代的方法,暂时只支持 IE10 以上浏览器。

Query Selector

常用的 class、id、属性 选择器都可以使用 document.querySelectordocument.querySelectorAll 替代。区别是

  • document.querySelector 返回第一个匹配的 Element
  • document.querySelectorAll 返回所有匹配的 Element 组成的 NodeList。它可以通过 [].slice.call() 把它转成 Array
  • 如果匹配不到任何 Element,jQuery 返回空数组 [],但 document.querySelector 返回 null,注意空指针异常。当找不到时,也可以使用 || 设置默认的值,如 document.querySelectorAll(selector) || []

注意:document.querySelectordocument.querySelectorAll 性能很。如果想提高性能,尽量使用 document.getElementByIddocument.getElementsByClassNamedocument.getElementsByTagName

1.0 选择器查询

// jQuery
$('selector');

 Native
document.querySelectorAll('selector');

1.1 class 查询

 jQuery
$('.class' Native
document.querySelectorAll('.class' or
document.getElementsByClassName('class');

 1.2 id 查询

 jQuery
$('#id' Native
document.querySelector('#id' or
document.getElementById('id');

1.3 属性查询

 jQuery
$('a[target=_blank]' Native
document.querySelectorAll('a[target=_blank]');

1.4 后代查询

 jQuery
$el.find('li' Native
el.querySelectorAll('li');

1.5 兄弟及上下元素

兄弟元素

 jQuery
$el.siblings();

 Native - latest,Edge13+
[...el.parentNode.children].filter((child) =>
  child !== el
);
 Native (alternative) - latest,Edge13+
Array.from(el.parentNode.children).filter((child) => Native - IE10+
Array.prototype.filter.call(el.parentNode.children,(child) => el
);

上一个元素

$el.prev();

 Native
el.previousElementSibling;

下一个元素

 next
$el.next();

 Native
el.nextElementSibling;

1.6 Closest

Closest 获得匹配选择器的第一个祖先元素,从当前元素开始沿 DOM 树向上。

$el.closest(queryString);

 Native - Only latest,NO IE
el.closest(selector);

 Native - IE10+
function closest(el,selector) {
  const matchesSelector = el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || el.msMatchesSelector;

  while (el) {
    if (matchesSelector.call(el,selector)) {
      return el;
    } else {
      el = el.parentElement;
    }
  }
  return null;
}

1.7 Parents Until

获取当前每一个匹配元素集的祖先,不包括匹配元素的本身。

$el.parentsUntil(selector,filter);

 Native
 parentsUntil(el,selector,filter) {
  const result = [];
  const matchesSelector = el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || match start from parent
  el = el.parentElement;
  while (el && !matchesSelector.call(el,selector)) {
    if (!filter) {
      result.push(el);
    }  {
       el.parentElement;
  }
   result;
}

1.8 Form

  • Input/Textarea
 jQuery
$('#my-input').val();

 Native
document.querySelector('#my-input').value;
  • 获取 e.currentTarget 在 .radio 中的数组索引
 jQuery
$('.radio').index(e.currentTarget);

 Native
Array.prototype.indexOf.call(document.querySelectorAll('.radio'),e.currentTarget);

1.9 Iframe Contents

jQuery 对象的 iframe contents() 返回的是 iframe 内的 document

  • Iframe contents
$iframe.contents();

 Native
iframe.contentDocument;
  • Iframe Query
 jQuery
$iframe.contents().find('.css' Native
iframe.contentDocument.querySelectorAll('.css');

1.10 获取 body

 jQuery
$('body' Native
document.body;

1.11 获取或设置属性

  • 获取属性
 jQuery
$el.attr('foo' Native
el.getAttribute('foo');
  • 设置属性
 jQuery,note that this works in memory without change the DOM
$el.attr('foo','bar' Native
el.setAttribute('foo','bar');
  • 获取 data- 属性
 jQuery
$el.data('foo' Native (use `getAttribute`)
el.getAttribute('data-foo' Native (use `dataset` if only need to support IE 11+)
el.dataset['foo'];

CSS & Style

2.1 CSS

  • Get style
 jQuery
$el.css("color" Native
// 注意:此处为了解决当 style 值为 auto 时,返回 auto 的问题
const win = el.ownerDocument.defaultView;

 null 的意思是不返回伪类元素
win.getComputedStyle(el,null).color;
  • Set style
 jQuery
$el.css({ color: "#ff0011" });

 Native
el.style.color = '#ff0011';
  • Get/Set Styles

注意,如果想一次设置多个 style,可以参考 oui-dom-utils 中 setStyles 方法

  • Add class
$el.addClass(className);

 Native
el.classList.add(className);
  • Remove class
$el.removeClass(className);

 Native
el.classList.remove(className);
  • has class
$el.hasClass(className);

 Native
el.classList.contains(className);
  • Toggle class
$el.toggleClass(className);

 Native
el.classList.toggle(className);

 2.2 Width & Height

Width 与 Height 获取方法相同,下面以 Height 为例:

Window height

 window height
$(window).height();

 含 scrollbar
window.document.documentElement.clientHeight;

 不含 scrollbar,与 jQuery 行为一致
window.innerHeight;

Document height

$(document).height();

 Native
const body = document.body;
const html = document.documentElement;
const height = Math.max(
  body.offsetHeight,body.scrollHeight,html.clientHeight,html.offsetHeight,html.scrollHeight
);

Element height

$el.height();

 getHeight(el) {
  const styles = this.getComputedStyle(el);
  const height = el.offsetHeight;
  const borderTopWidth = parseFloat(styles.borderTopWidth);
  const borderBottomWidth = parseFloat(styles.borderBottomWidth);
  const paddingTop = parseFloat(styles.paddingTop);
  const paddingBottom = parseFloat(styles.paddingBottom);
  return height - borderBottomWidth - borderTopWidth - paddingTop - paddingBottom;
}

 精确到整数(border-box 时为 height - border 值,content-box 时为 height + padding 值)
el.clientHeight;

 精确到小数(border-box 时为 height 值,content-box 时为 height + padding + border 值)
el.getBoundingClientRect().height;

2.3 Position & Offset

Position

获得匹配元素相对父元素的偏移

$el.position();

 Native
{ left: el.offsetLeft,top: el.offsetTop }

Offset

获得匹配元素相对文档的偏移

$el.offset();

 getOffset (el) {
  const box = el.getBoundingClientRect();

   {
    top: box.top + window.pageYOffset - document.documentElement.clientTop,left: box.left + window.pageXOffset - document.documentElement.clientLeft
  }
}

2.4 ScrollTop

获取元素滚动条垂直位置。

$(window).scrollTop();

 Native
(document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;

DOM Manipulation

3.1 Remove

从 DOM 中移除元素。

$el.remove();

 Native
el.parentNode.removeChild(el);

3.2 Text

Get text

返回指定元素及其后代的文本内容。

$el.text();

 Native
el.textContent;

Set text

设置元素的文本内容。

$el.text(string);

 Native
el.textContent = string;

3.3 HTML

Get HTML

$el.html();

 Native
el.innerHTML;

Set HTML

$el.html(htmlString);

 Native
el.innerHTML = htmlString;

3.4 Append

Append 插入到子节点的末尾

 jQuery
$el.append("<div id='container'>hello</div>" Native (HTML string)
el.insertAdjacentHTML('beforeend','<div id="container">Hello World</div>' Native (Element)
el.appendChild(newEl);

3.5 Prepend

 jQuery
$el.prepend("<div id='container'>hello</div>" Native (HTML string)
el.insertAdjacentHTML('afterbegin',1)"> Native (Element)
el.insertBefore(newEl,el.firstChild);

3.6 insertBefore

在选中元素前插入新节点

$newEl.insertBefore(queryString);

 Native (HTML string)
el.insertAdjacentHTML('beforebegin ',1)"> Native (Element)
const el = document.querySelector(selector);
 (el.parentNode) {
  el.parentNode.insertBefore(newEl,el);
}

3.7 insertAfter

在选中元素后插入新节点

$newEl.insertAfter(queryString);

 Native (HTML string)
el.insertAdjacentHTML('afterend',el.nextSibling);
}

3.8 is

如果匹配给定的选择器,返回true

$el.is(selector);

 Native
el.matches(selector);

3.9 clone

深拷贝被选元素。(生成被选元素的副本,包含子节点、文本和属性。)

jQuery
$el.clone();

Native
el.cloneNode();

注:深拷贝添加参数‘true’

3.10 empty

移除所有子节点

$el.empty();

Native
el.innerHTML = '';

3.11 wrap

把每个被选元素放置在指定的HTML结构中。

jQuery
$(".inner").wrap('<div class="wrapper"></div>'Native
Array.prototype.forEach.call(document.querySelector('.inner'),(el) => {
   const wrapper = document.createElement('div');
   wrapper.className = 'wrapper';
   el.parentNode.insertBefore(wrapper,el);
   el.parentNode.removeChild(el);
   wrapper.appendChild(el);
});

3.12 unwrap

移除被选元素的父元素的DOM结构

 jQuery
$('.inner').unwrap();

 Native
Array.prototype.forEach.call(document.querySelectorAll('.inner'),1)"> {
      let elParentNode = el.parentNode

      if(elParentNode !== document.body) {
          elParentNode.parentNode.insertBefore(el,elParentNode)
          elParentNode.parentNode.removeChild(elParentNode)
      }
});

3.13 replaceWith

用指定的元素替换被选的元素

jQuery
$('.inner').replaceWith('<div class="outer"></div>'Native
Array.prototype.forEach.call(document.querySelectorAll('.inner'),1)"> {
  const outer = document.createElement("div");
  outer.className = "outer";
  el.parentNode.insertBefore(outer,el);
  el.parentNode.removeChild(el);
});

3.14 simple parse

解析 HTML/SVG/XML 字符串

 jQuery
$(`<ol>
  <li>a</li>
  <li>b</li>
</ol>
<ol>
  <li>c</li>
  <li>d</li>
</ol>`);

 Native
range = document.createRange();
parse = range.createContextualFragment.bind(range);

parse(`<ol>
  <li>a</li>
  <li>b</li>
</ol>
<ol>
  <li>c</li>
  <li>d</li>
</ol>`);

Ajax

Fetch API 是用于替换 XMLHttpRequest 处理 ajax 的新标准,Chrome 和 Firefox 均支持,旧浏览器可以使用 polyfills 提供支持。

IE9+ 请使用 github/fetch,IE8+ 请使用 fetch-ie8,JSONP 请使用 fetch-jsonp

4.1 从服务器读取数据并替换匹配元素的内容

$(selector).load(url,completeCallback)

 Native
fetch(url).then(data => data.text()).then(data => {
  document.querySelector(selector).innerHTML = data
}).then(completeCallback)

Events

完整地替代命名空间和事件代理,链接到 https://github.com/oneuijs/oui-dom-events

5.0 Document ready by DOMContentLoaded

$(document).ready(eventHandler);

 检测 DOMContentLoaded 是否已完成
if (document.readyState !== 'loading') {
  eventHandler();
}  {
  document.addEventListener('DOMContentLoaded',eventHandler);
}

5.1 使用 on 绑定事件

$el.on(eventName,eventHandler);

 Native
el.addEventListener(eventName,eventHandler);

5.2 使用 off 解绑事件

$el.off(eventName,1)"> Native
el.removeEventListener(eventName,eventHandler);

5.3 Trigger

 jQuery
$(el).trigger('custom-event',{key1: 'data'});

 (window.CustomEvent) {
  const event = new CustomEvent('custom-event',{detail: {key1: 'data'}});
}  {
  const event = document.createEvent('CustomEvent');
  event.initCustomEvent('custom-event',1)">true,1)">});
}

el.dispatchEvent(event);

Utilities

大部分实用工具都能在 native API 中找到. 其他高级功能可以选用专注于该领域的稳定性和性能都更好的库来代替,推荐 lodash

6.1 基本工具

isArray

检测参数是不是数组。

$.isArray(range);

 Native
Array.isArray(range);

isWindow

检测参数是不是 window。

$.isWindow(obj);

 isWindow(obj) {
  return obj !== null && obj !== undefined && obj === obj.window;
}

inArray

在数组中搜索指定值并返回索引 (找不到则返回 -1)。

$.inArray(item,array);

 Native
array.indexOf(item) > -1;

 ES6-way
array.includes(item);

isNumeric

检测传入的参数是不是数字。 Use typeof to decide the type or the type example for better accuracy.

$.isNumeric(item);

 isNumeric(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

isFunction

检测传入的参数是不是 JavaScript 函数对象。

$.isFunction(item);

 isFunction(item) {
  if (typeof item === 'function') {
    true;
  }
  var type = Object.prototype.toString(item);
  return type === '[object Function]' || type === '[object GeneratorFunction]';
}

isEmptyObject

检测对象是否为空 (包括不可枚举属性).

$.isEmptyObject(obj);

 isEmptyObject(obj) {
  return Object.keys(obj).length === 0;
}

isPlainObject

检测是不是扁平对象 (使用 “{}” 或 “new Object” 创建).

$.isPlainObject(obj);

 isPlainObject(obj) {
  typeof (obj) !== 'object' || obj.nodeType || obj !==  obj.window) {
    false;
  }

  if (obj.constructor &&
      !Object.prototype.hasOwnProperty.call(obj.constructor.prototype,'isPrototypeOf')) {
    ;
}

extend

合并多个对象的内容到第一个对象。 object.assign 是 ES6 API,也可以使用 polyfill

$.extend({},defaultOpts,opts);

 Native
Object.assign({},opts);

trim

移除字符串头尾空白。

$.trim(string);

 Native
string.trim();

map

将数组或对象转化为包含新内容的数组。

 jQuery
$.map(array,(value,index) => {
});

 Native
array.map((value,1)"> {
});

each

轮询函数,可用于平滑的轮询对象和数组。

 jQuery
$.each(array,(index,value) => Native
array.forEach((value,1)"> {
});

grep

找到数组中符合过滤函数的元素。

 jQuery
$.grep(array,1)"> Native
array.filter((value,1)"> {
});

type

检测对象的 JavaScript [Class] 内部类型。

$.type(obj);

 type(item) {
  const reTypeOf = /(?:^\[object\s(.*?)\]$)/;
   Object.prototype.toString.call(item)
    .replace(reTypeOf,'$1')
    .toLowerCase();
}

merge

合并第二个数组内容到第一个数组。

$.merge(array1,array2);

 使用 concat,不能去除重复值
 merge(...args) {
   [].concat(...args)
}

 ES6,同样不能去除重复值
array1 = [...array1,...array2]

 使用 Set,可以去除重复值
return Array.from(new Set([].concat(...args)))
}

now

返回当前时间的数字呈现。

$.now();

 Native
Date.now();

proxy

传入函数并返回一个新函数,该函数绑定指定上下文。

$.proxy(fn,context);

 Native
fn.bind(context);

makeArray

类数组对象转化为真正的 JavaScript 数组。

$.makeArray(arrayLike);

Array.prototype.slice.call(arrayLike);

 ES6-way
Array.from(arrayLike);

6.2 包含

检测 DOM 元素是不是其他 DOM 元素的后代.

$.contains(el,child);

 Native
el !== child && el.contains(child);

6.3 Globaleval

全局执行 JavaScript 代码。

$.globaleval(code);

 Globaleval(code) {
  const script = document.createElement('script');
  script.text = code;

  document.head.appendChild(script).parentNode.removeChild(script);
}

 Use eval,but context of eval is current,context of $.Globaleval is global.
eval(code);

6.4 解析

parseHTML

解析字符串为 DOM 节点数组.

$.parseHTML(htmlString);

 parseHTML(string) {
  const context = document.implementation.createHTMLDocument();

   Set the base href for the created document so any parsed elements with URLs
   are based on the document's URL
  const base = context.createElement('base');
  base.href = document.location.href;
  context.head.appendChild(base);

  context.body.innerHTML = string;
   context.body.children;
}

parseJSON

传入格式正确的 JSON 字符串并返回 JavaScript 值.

$.parseJSON(str);

 Native
JSON.parse(str);

Promises

Promise 代表异步操作的最终结果。jQuery 用它自己的方式处理 promises,原生 JavaScript 遵循 Promises/A+ 标准实现了最小 API 来处理 promises。

7.1 done,fail,always

done 会在 promise 解决时调用,fail 会在 promise 拒绝时调用,always 总会调用。

$promise.done(doneCallback).fail(failCallback).always(alwaysCallback)

 Native
promise.then(doneCallback,failCallback).then(alwaysCallback,alwaysCallback)

7.2 when

when 用于处理多个 promises。当全部 promises 被解决时返回,当任一 promise 被拒绝时拒绝。

 jQuery
$.when($promise1,$promise2).done((promise1Result,promise2Result) => Native
Promise.all([$promise1,$promise2]).then([promise1Result,promise2Result] => {});

7.3 Deferred

Deferred 是创建 promises 的一种方式。

 asyncFunc() {
  const defer =  $.Deferred();
  setTimeout(() => {
    if() {
      defer.resolve('some_value_computed_asynchronously');
    }  {
      defer.reject('failed');
    }
  },1000);

   defer.promise();
}

 asyncFunc() {
  new Promise((resolve,reject) => {
    setTimeout(() =>) {
        resolve('some_value_computed_asynchronously');
      }  {
        reject('failed');
      }
    },1)">);
  });
}

 Deferred way
 defer() {
  const deferred = {};
  const promise =  {
    deferred.resolve = resolve;
    deferred.reject = reject;
  });

  deferred.promise = () => promise;
  };

   deferred;
}

 asyncFunc() {
  const defer = defer();
  setTimeout(() => defer.promise();
}

Animation

8.1 Show & Hide

$el.show();
$el.hide();

 更多 show 方法的细节详见 https://github.com/oneuijs/oui-dom-utils/blob/master/src/index.js#L363
el.style.display = ''|'inline'|'inline-block'|'inline-table'|'block';
el.style.display = 'none';

8.2 Toggle

显示或隐藏元素。

$el.toggle();

if (el.ownerDocument.defaultView.getComputedStyle(el,1)">null).display === 'none') {
  el.style.display = ''|'inline'|'inline-block'|'inline-table'|'block';
}  {
  el.style.display = 'none';
}

8.3 FadeIn & FadeOut

 jQuery
$el.fadeIn(3000);
$el.fadeOut(3000 Native
el.style.transition = 'opacity 3s';
 fadeIn
el.style.opacity = '1' fadeOut
el.style.opacity = '0';

8.4 FadeTo

调整元素透明度。

 jQuery
$el.fadeTo('slow',0.15);
 Native
el.style.transition = 'opacity 3s';  假设 'slow' 等于 3 秒
el.style.opacity = '0.15';

8.5 FadeToggle

动画调整透明度用来显示或隐藏。

$el.fadeToggle();

;
const { opacity } = el.ownerDocument.defaultView.getComputedStyle(el,1)">if (opacity === '1') {
  el.style.opacity = '0' {
  el.style.opacity = '1';
}

8.6 SlideUp & SlideDown

$el.slideUp();
$el.slideDown();

 Native
const originHeight = '100px';
el.style.transition = 'height 3s' slideUp
el.style.height = '0px' slideDown
el.style.height = originHeight;

8.7 SlideToggle

滑动切换显示或隐藏。

$el.slideToggle();

;
const { height } = el.ownerDocument.defaultView.getComputedStyle(el,1)">if (parseInt(height,10) === 0) {
  el.style.height = originHeight;
}
 {
 el.style.height = '0px';
}

8.8 Animate

执行一系列 CSS 属性动画。

$el.animate({ params },speed);

 Native
el.style.transition = 'all ' + speed;
Object.keys(params).forEach((key) =>
  el.style[key] = params[key];
)

Alternatives

Browser Support

转载地址:You Don't Need jQuery

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


1.第一步 设置响应头 header(&#39;Access-Control-Allow-Origin:*&#39;); //支持全域名访问,不安全,部署后需要固定限制为客户端网址 header(&#39;Access-Control-Allow-Methods:POST,GET,OPTIONS,D
$.inArray()方法介绍 $.inArray()函数用于在数组中搜索指定的值,并返回其索引值。如果数组中不存在该值,则返回-1; $.inArray(value,array) --value是要查找的值,array是被查找的数组。 有如下实例: &lt;!DOCTYPE html&gt; &l
jquery.serializejson.min.js的妙用 关于这个jquery.serializejson.min.js插件来看,他是转json的一个非常简单好用的插件。 前端在处理含有大量数据提交的表单时,除了使用Form直接提交刷新页面之外,经常碰到的需求是收集表单信息成数据对象,Ajax提
JS 将form表单数据快速转化为object对象(json对象) jaymou 于 2020-03-03 11:11:05 发布 3534 收藏 3 分类专栏: 前端 文章标签: javascript jquery 版权 前端 专栏收录该内容 5 篇文章0 订阅 订阅专栏 直接上代码 /** *
jQuery的区别:$().click()和$(document).on(&#39;click&#39;,&#39;要选择的元素&#39;,function(){})的不同 文章地址:https://www.cnblogs.com/sqh17/p/7746418.html 解决:动态创建的元素的事件
jQuery插件之jquery.spinner数字智能增减插件 参考地址:http://www.helloweba.com/view-blog-282.html 左右加减数字 像京东提交订单时目前使用的是左右加减数字的效果,这个效果直接明了,操作简单。我们使用jquery.spinner.js插件实
layui标签或一般标签均可&lt;div class=&quot;layui-form-item&quot;&gt; &lt;label class=&quot;layui-form-label&quot;&gt;异地仓名称&lt;/label&gt; &lt;div class=&quot;la
网上对于select option 动态添加修改如下, $(&quot;#selectId&quot;).append(&quot;&lt;option value=&#39;&quot;+value+&quot;&#39;&gt;&quot;+text+&quot;&lt;/option&gt;&
jQuery中的 $.extend() 和 $.fn.extend() ANGWH 于 2020-05-24 06:39:59 发布 注意:$.extend是为jQuery类添加添加类方法,用$.调用(类似$.ajax),$.fn.extend则是为jQuery对象添加方法(实例方法),用DOM元素
jquery 循环数组输出显示在html页面 jquery 没有双向数据绑定,但是很多需求确实需要我们从后台接收到数组或者对象循环显示在前台页面上,这时我们可以用字符串拼接,元素添加的方法去实现 js部分如下: 复制代码 $(function(){ var a=[&quot;1aa&quot;,&q
javascript事件委托理解,jQuery .on()方法一步到位实现事件委托 Javascript-概念原理 专栏收录该内容 10 篇文章0 订阅 订阅专栏 本篇文章借鉴自:博客园文章,只为自己巩固下事件委托方面的知识 概述: 什么叫事件委托?他还有一个名字叫做事件代理,(时间代理 事件委托,
JQuery-$.when().done().fail()的使用 原文引用于&#160;Echoo华地于&#160;2022-01-06 14:07:10 发布 jQuery的开发速度很快,几乎每半年一个大版本,每两个月一个小版本。 每个版本都会引入一些新功能。今天我想介绍的,就是从jQuery 1
jQuery tableExport导出 excel 上篇写的是jQuery&#160;导出word,就试试导出excel。看见网上写的很乱,我这就把我写的整理下来,有部分来自网上capy 1. js文件的引用 &lt;script type=&quot;text/javascript&quot;
jQuery的遍历-prev()和next()方法 &lt;div class=&quot;box&quot; id=&quot;box&quot;&gt; &lt;a href=&#39;#&#39; class=&quot;a&quot;&gt; &lt;input type=&quot;tex
attr()和addClass()的区别 方法 addClass() attr()用途&#x9;追加样式&#x9;设置样式对同一个网页元素操作&#x9;&lt;p&gt;test&lt;/p&gt;第1次使用方法&#x9;$(&quot;p&quot;).addClass(&quot;high&quot;);&#x9;$(&quot;p&
前端——函数(匿名函数、自执行函数) FreshLemon_ 于 2019-06-11 17:11:49 发布 函数声明:function box(){} 函数表达式:var box = function(){}; 匿名函数:function(){} (属于函数表达式) 1声明了一个函数: var
js: 获取标签元素data-*属性值的方法 彭世瑜 于 2022-05-23 09:59:50 发布 2165 收藏 1 文章标签: javascript 前端 jquery 版权 标签上有两个属性data-id 和 data-user-name, 需要通过js去获取 &lt;style&gt;
JavaScript函数详解:匿名函数、具名函数、函数传参、不定参、返回值、JS预解析机制 1.具名函数 定义: 调用: 方式1:方法名(); 可以多次调用 方式2:在事件中调用,直接写函数名,不需用括号 2.匿名函数 没有名字的函数 匿名函数在使用时只有两种情况: 1.匿名函数自执行:声明后不需要
如何等待ajax完成再执行相应操作 ajax广泛应用于异步请求,对于大多数业务来说,这是十分方便的,但对于一些特殊的业务,ajax的异步性会起到相反的作用。 例如在ajax请求成功后,后续的操作需要依赖ajax执行成功后的相应操作。 // 声明一个表示状态的全局变量 status var statu
一步一步教你写一个jQuery的插件教程(Plugin) 更新时间:2009年09月03日 02:10:54 作者: 我将会在下面的例子中一个一个的说明上面这几个条件,做完这些事情后我们就会创建一个高亮显示text的简单插件。 jQuery 的plugin开发需要注意的事情, 1. 明确jQuery