剛開始用ECharts,看了百度的例子,是使用原生的方法獲取div,然后再初始化Chart組件:
var myChart = echarts.init(document.getElementById('main'));
嘗試用JQuery獲取DIV設(shè)置后,發(fā)現(xiàn)圖直接消失了,后來用Chrome瀏覽器debug代碼,發(fā)現(xiàn)document.getElementById 跟 $('#id') 返回的結(jié)果不一樣。
然后用下面方式試了下,就可以了:
var myChart = echarts.init($('#main')[0]);
// 或者
var myChart = echarts.init($('#main').get(0));
平時一直使用這種方式來獲取DOM元素,想當(dāng)然的認(rèn)為JQuery返回的就是DOM元素了,通過這次調(diào)試,發(fā)現(xiàn)其實并不是....
通過調(diào)試發(fā)現(xiàn)JQuery一直是返回數(shù)組的,即使未獲取到DOM,也返回一個空數(shù)組。
JQuery 這么實現(xiàn)有這么幾個好處,個人理解:
- 返回一個JQuery對象,而不是DOM對象,主要是為了能夠提供更多的方法,如val()、text()、html()等,提供豐富的操作方法
- 獲取的DOM元素是一個數(shù)組,這應(yīng)該是因為獲取的DOM元素個數(shù)不定,這樣使用者可以不用考慮里面元素的個數(shù),直接操作即可,內(nèi)部實現(xiàn)也統(tǒng)一了。
- 可以使用鏈?zhǔn)讲僮?/li>
- 一般使用JQuery之后,很少情況再拿到DOM元素去做一些操作,而且操作起來并不比JQuery方便。真有需求,加個[0]即可。