2017-09-06 42 views
1

爲什麼我不能在JS和jQuery中使用相同的變量? 例如:爲什麼我不能在JS和jQuery中使用相同的變量?

var elHTML = '<div></div>'; 
var el = document.getElementById('elementFirst'); //js code 
el.innerHTML = elHTML; //js code 
//it works! 

如果我改變一些像這樣的代碼..

var elHTML = '<div></div>'; 
var el = $('#elementFirst'); //jQuery code 
el.innerHTML = elHTML; //js code 
//not work! 

或本

var elHTML = '<div></div>'; 
var el = document.getElementById('elementFirst'); //js code 
el.html(elHTML); //jQuery code 
//not work! 

,並沒有在過去兩年發生的代碼與#elementFirst

感謝預先回答

+2

你不能將它們混合的document.getElementById()返回一個HTML元素和$()返回jQuery對象。結構和相關的方法是不同的。 – Lalit

回答

4

因爲$()不會返回HTMLElement,而是DOM element包含jQuery object。 jQuery的功能只能與jQuery objects一起使用。

在第二種情況下,您使用innerHTML屬性,該屬性在jQuery的對象中不存在。

在第三種情況下,您使用html()函數,這是一個jQuery函數,但您已將其與HTMLElement一起使用。

查看示例。

你可以看到innerHTML屬性不jQuery objecthtml功能存在於DOM element

var jEl = $('#elementFirst'); 
 
console.log('innerHTML' in jEl); 
 

 
var domEl = document.getElementById('elementFirst'); 
 
console.log('html' in domEl);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id='elementFirst'></div>

0
var elHTML = '<div>Hello</div>'; 
var el = $('#elementFirst'); //jQuery code 
el.get(0).innerHTML = elHTML; 

基本上你使用獲得(0)從jQuery的過渡客場普通的香草的JavaScript

相關問題