2015-09-05 103 views
0

我在js和jquery中是全新的。在試圖理解它的時候,我提出了一個問題。但在此之前,如果我的問題包含子問題,我想道歉。.checked和.attr之間的區別(checked,boolean)

首先,我看到in this question,.checked應該和DOM對象一起使用,而.attr()需要和jQuery對象一起使用。現在我的問題:

<html> 

<head> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
</head> 

<body> 
    <ul> 
     <li>List element 1</li> 
     <li>List element 2</li> 
    </ul> 
    checkbox1:<input type='checkbox' id='checkbox1'/> 
    checkbox2:<input type='checkbox' id='checkbox2'/> 
    <script> 
     var checkboxes=$('input'); 
     checkboxes[1].checked=true; 
    </script> 
</body> 
</html> 

在這裏,checkboxes變量是一個jQuery對象或DOM元素?我在想,$()返回一個jquery對象(如here所述),但是當我嘗試時,checkboxes.attr('checked',true)而不是checkboxes[1].checked=true;,我得到錯誤。我的另一個假設是,可能是checkboxes變量是一個jquery對象,而checkboxes[1]是一個dom元素?我對嗎?

編輯

一個問題,當我想了解一個變量的類型,我寫瀏覽器的控制檯這一說法:typeof運算(VARIABLENAME)。不幸的是,當我編寫typeof(複選框)或typeof(複選框1)時,我總是得到Object結果。但只知道我知道其中一個是Jquery對象,另一個是DOM對象。有什麼功能給我這些差異嗎?

+3

是的,你說得對。要從jQuery集合的索引中獲取jQuery項目,請使用'.eq',如'checkboxes.eq(1).prop('checked',true)'中所示。 (並使用'prop'來設置屬性,而不是'attr'!) – Ryan

+2

在jquery中你使用'prop'所以只需將'attr改爲prop' – guradio

+0

@minitech非常感謝你,如果你可以把它寫成答案,我會接受它。是的,接下來我認爲我將學習的是attr和prop之間的區別 – zwlayer

回答

1

其中之一是Jquery對象,另一個是DOM對象。有什麼 功能給我這些差異?

您可以使用:

obj instanceof jQuery 

如果你願意,你可以使用更普遍的方式:

Object.prototype.toString.call(myVariable); 
+0

感謝您的回覆。但要使用它,我需要知道我的選項來檢查instanceof。我問我如何知道變量的類型,如果我不知道什麼特別的話 – zwlayer

+0

如果你的變量被稱爲'myVariable',那麼你可以使用'if myVariable instanceof jQuery'來檢查類型。就那麼簡單。 –

+0

我想你不明白我的問題。假設你有var a = 15;但是你不知道15是什麼類型。所以在這種情況下,我想知道a的類型。例如在python中,我會使用類型(a)並打印或其他東西。 JS中有沒有類似的東西? – zwlayer

相關問題