2012-03-21 148 views
0

嗨我是小白到jQuery和我聽說這沒關係與純JavaScript混合jQuery的,但我想知道這是什麼導致了下面的代碼不工作或是我做錯了嗎?麻煩混合jQuery和JS

var fnd_child = $('#thumb_slider').children().length; 

$(document).ready(function(){ 
    $('#basic_div').innerHTML = fnd_child; 
}); 

basic_div沒有任何反應......它只是空的。我甚至嘗試將此功能附加到按鈕上,但仍然沒有任何反應。我只需要知道basic_div中有多少個孩子,然後在屏幕上輸出這個數字。謝謝!

+1

***組合JS的JavaScript *** * JS =短針對JavaScript *。你的意思是jQuery的..但隨後jQuery是JavaScript的以及.. – 2012-03-21 00:22:30

+0

是我的意思是JavaScript,但.innerHTML只是JavaScript的......這不是Jquery的API,所以我在想,如果這是導致問題的一部分。 – 2012-03-21 00:25:22

回答

1

它始終是安全的訪問文件準備中的DOM元素。這確保了一旦dom被加載後它將被訪問。您只需使用html方法來設置值。它應該工作。

$(document).ready(function(){ 
    var fnd_child = $('#thumb_slider').children().length; 
    $('#basic_div').html(fnd_child); 
}); 

這裏的工作演示:http://jsfiddle.net/vrfAZ/

+0

謝謝!這真的很有幫助。 – 2012-03-21 00:38:29

+0

@DigitalBrent:很高興知道它是爲你工作。 – Shyju 2012-03-21 00:45:48

4

$('#basic_div')是返回jQuery對象,而不是一個DOM元素的選擇器。

$('#basic_div')[0]會得到你的元素,但爲什麼不使用$('#basic_div').html()呢?

1

您應該使用.html()方法。

$('#basic_div').html(fnd_child); 

,甚至更好(因爲fnd_child是文本)使用.text()方法

$('#basic_div').text(fnd_child); 
0

你也可以這樣做:

document.getElementById('basic_div').innerHTML = fnd_child; 

調用與選擇jQuery函數返回一個「jQuery對象」持有的元素被選中選擇器在一個數組中。然後它具有替換等效DOM方法的方法,以及更多設置或返回元素屬性(或有時屬性)的方法。

所以對jQuery的版本,而不是分配給innerHTML屬性,必須調用html方法,並提供替代HTML作爲參數:

$('#basic_div').html(fnd_child); 

其本質上只是做了什麼上面的行呢,但有更多的函數調用。