不要過度依賴JQuery(三)

在這里先拜個年,祝大家新年快樂,闔家幸福熙含,步步高升伞插!

回歸正題割粮,在不要過度依賴JQuery(一)不要過度依賴JQuery(二)兩篇文章中已經(jīng)列舉了大量的使用原生JavaScript替代JQuery的例子,在本文中將繼續(xù)列舉媚污!

1舀瓢、表單

獲取焦點

$('#test').focus();  
$('#test').focus(function(){});

var t = document.getElementById('test');
function addEvent(dom, type, handle, capture) {       
  if(dom.addEventListener) {       
    dom.addEventListener(type, handle, capture);        
  } else if(dom.attachEvent) {       
    dom.attachEvent("on" + type, handle);       
  } 
}; 
function focus(elem, fn) {
  if(fn && typeof fn === 'function') {
    addEvent(elem, 'focus', fn);
  } else {
    elem.focus();
  }
}

focus(t, function(){});

失去焦點

$('#test').blur();
$('#test').blur(function(){});
   
function blur(elem, fn) {    
  if(fn && typeof fn === 'function') {    
    addEvent(elem, 'blur', fn);    
  } else {    
    elem.blur();    
  }   
}    

blur(t, function(){});

實時監(jiān)控

$('#test').on('input propertychange', fn);

function inputChange(dom, fn, capture) {   
  capture = capture || false;   
  addEvent(dom, 'input', fn, capture);
  addEvent(dom, 'propertychange', fn, capture);   
}

inputChange(t, function(){});

2、判斷類型

判斷類型

$.type(obj);

Object.prototype.toString.call(obj).replace(/^\[object (.+)\]$/, '$1').toLowerCase();

判斷是否為一個函數(shù)

$.isFunction(fn)

function isFunction(fn){
  return typeof fn === 'function';
}

判斷是否為數(shù)字

$.isNumeric(num);

function isNumber(num) {
  var type = typeof num;
  return ( type === 'number' || type === 'string') && 
      !isNaN( num - parseFloat( num ) );
}

判斷是否為數(shù)組

$.isArray(obj);

function isArray(obj) {
  if( Array.isArray ) {
    return Array.isArray(obj);
  } else {
    return Object.prototype.toString.call(obj) === '[object Array]';
  }
}

3耗美、時間

獲取當前時間

$.now()

new Date().getTime();

/* 更簡單 */
+new Date();

4京髓、改變上下文(this)

$.proxy(fn, context);

fn.bind(context);

5、空函數(shù)

創(chuàng)建一個空函數(shù)

var fn = $.noop();

var fn = function() {}

6商架、數(shù)組

合并數(shù)組

$.merge(arr1, arr2)

function (arr1, arr2) {
  return arr1.concat(arr2);
}

類數(shù)組對象轉(zhuǎn)換成數(shù)組

var divs = document.querySelectorAll('div');

var arr = $.makeArray(divs);

var arr = Array.prototype.slice.call(divs);

// ES6 
var arr = Array.from(divs)

7堰怨、Iframe

獲取iframe的document

$('#iframe').contents();

var iframe = document.getElementById('iframe');
iframe.contentDocument;

8、元素包含關(guān)系

檢查一個DOM元素是另一個DOM元素的后代

$.contains(parent, child);

function contains(root, el) { 
  /* Chrome / Firefox */  
  if (root.compareDocumentPosition) {  
    return root === el || !!(root.compareDocumentPosition(el) & 16);  
  } 
  /* IE */
  if (root.contains && el.nodeType === 1){   
    return root.contains(el) && root !== el;   
  }   
  while ((el = el.parentNode)) {  
    if (el === root) { return true; }  
    return false;   
  }
}

9蛇摸、scroll

設(shè)置/獲取window滾動位置

/*獲取*/
$(window).scrollTop();

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

/*設(shè)置*/
$(window).scrollTop(10);

(document.documentElement && document.documentElement.scrollTop = 10) || document.body.scrollTop = 10;

設(shè)置某個元素滾動位置

$('#test').scrollTop(10);

var t = document.getElementById('test');

t.scrollTop = 10;

注意:別加單位备图!

10、節(jié)點

獲取元素的最近的祖先定位(position非static)元素

$('#test').offsetParent();

var t = document.getElementById('test');
t.offsetParent;

到這里,《不要過度依賴JQuery》系列就告一段落了揽涮!

原文鏈接:不要過度依賴JQuery(三)

如有錯誤或建議抠藕,歡迎在下方評論區(qū)留言!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蒋困,一起剝皮案震驚了整個濱河市盾似,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌雪标,老刑警劉巖颜说,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異汰聋,居然都是意外死亡门粪,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門烹困,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玄妈,“玉大人,你說我怎么就攤上這事髓梅∧怛撸” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵枯饿,是天一觀的道長酝锅。 經(jīng)常有香客問我,道長奢方,這世上最難降的妖魔是什么搔扁? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蟋字,結(jié)果婚禮上稿蹲,老公的妹妹穿的比我還像新娘。我一直安慰自己鹊奖,他們只是感情好苛聘,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著忠聚,像睡著了一般设哗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上两蟀,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天网梢,我揣著相機與錄音,去河邊找鬼垫竞。 笑死澎粟,一個胖子當著我的面吹牛蛀序,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播活烙,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼徐裸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了啸盏?” 一聲冷哼從身側(cè)響起重贺,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎回懦,沒想到半個月后气笙,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡怯晕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年潜圃,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舟茶。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡谭期,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出吧凉,到底是詐尸還是另有隱情隧出,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布阀捅,位于F島的核電站胀瞪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏饲鄙。R本人自食惡果不足惜凄诞,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望傍妒。 院中可真熱鬧幔摸,春花似錦、人聲如沸颤练。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嗦玖。三九已至,卻和暖如春跃脊,著一層夾襖步出監(jiān)牢的瞬間宇挫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工酪术, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留器瘪,地道東北人翠储。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像橡疼,于是被迫代替她去往敵國和親援所。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 在線閱讀 http://interview.poetries.top[http://interview.poetr...
    程序員poetry閱讀 114,399評論 24 450
  • 原文鏈接 http://blog.poetries.top/2016/10/20/review-jQuery 關(guān)注...
    程序員poetry閱讀 16,646評論 18 503
  • 一欣除、樣式篇 第1章 初識jQuery (1)環(huán)境搭建 進入官方網(wǎng)站獲取最新的版本 http://jquery.co...
    凜0_0閱讀 3,390評論 0 44
  • 【創(chuàng)新思維】品牌之我見 Rochina201707130210 早安吉祥住拭! 開運之前先開心 萬事萬物皆有利於你 ...
    派拉蒙思維俱樂部閱讀 236評論 0 0
  • 從明天起,做一個充實的人历帚。跑步滔岳,請堅持下去⊥炖危看書谱煤,請堅持下去。旅行禽拔,逛街刘离,陪朋友聊天……
    大慶小陳閱讀 155評論 1 1