2015-09-05 61 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

相关问题