我爱编程

28 jQuery面试题

2018-05-24  本文已影响60人  加油吧_

1. div 和 $div 的区别和联系

<div id=x></div>
var div = document.getElementById('x')
var $div = $('#x')

div 和 $div 的联系是:
$(div) 可以将 div 封装成一个 jQuery 对象,就跟 $div 一样
$div[0] === div ,$div 的第一项就是 div
div 和 $div 的区别是:
div 的属性和方法有 childNodes firstChid nodeType 等
$div 的 属性和方法有 addClass removeClass toggleClass 等

2. 补全代码

window.jQuery = ???
window.$ = jQuery
var $div = $('div')
$div.addClass('red') // 可将所有 div 的 class 添加一个 red
$div.setText('hi') // 可将所有 div 的 textContent 变为 hi

HTML

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
 <div>www</div>
 <div>www</div>
 <div>www</div>
 <div>www</div>
 <div>www</div>
</body>
</html>

css

.red{color : red}

javascript

window.jQuery = function(nodeOrSelector) {
  let nodes = { };
  if(typeof nodeOrSelector === 'string'){
    let temp=document.querySelectorAll(nodeOrSelector);
    for(let i = 0;i<temp.length;i++){
      nodes[i]=temp[i];
    }
    nodes.length = temp.length;
  }else if (nodeOrSelector instanceof Node){
    nodes = {o: nodeOrSelector,
            length: 1
    };
  }
  nodes.addClass= function(classes){
    classes.forEach((value)=>{
      for(let i =0;i< nodes.length;i++){
        nodes[i].classList.add(value)
      }
    })
  }
  nodes.setText = function(text) {
    for(let i=0;i< nodes.length;i++){
      nodes[i].textContent = text;
    } 
  };
  return nodes;
};
window.$ = jQuery;
var $div = $('div');
$div.setText('hi') ;  // 可将所有 div 的 textContent 变为 hi
$div.addClass(['red']);   // 可将所有 div 的 class 添加一个 red
上一篇 下一篇

猜你喜欢

热点阅读