什么是jquery对象数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是jquery对象数组相关的知识,希望对你有一定的参考价值。

一般高级语言中的对象数组,例如c++、java中,可以理解为一个数组中的每一个元素都是一个对象,通过数组名+下标的方式访问其中的每个元素。而jquery中的对象数组怎么理解,通过数组名+下标的方式访问返回undefined,但有可以通过for..in的方式遍历,再遍历的过程中通过下标的方式却有可以返回内容,到底怎么解释呢?

通过标签选择器获取的jQuery对象数组举例:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  

 

<html xmlns="http://www.w3.org/1999/xhtml">  

<head>  

    <title></title>  

 

    <script src="../myjs/jquery-1.4.2.js" type="text/javascript"></script>  

    <script  type ="text/javascript" >  

        $(function()  

            $("p").text("这是p标签");  

        );  

    </script>  

</head>  

<body>  

 <p></p>  

  <p></p> <p></p> <p></p> <p></p>  

  <p></p>  

</body>  

</html>  

运行结果:

参考技术A

介绍jQuery操作对象数组元素的3种方法以及一种错误方法,这里记录一下,防止下次再犯,有需要的小伙伴也可以参考下。

代码如下:

 <div id="div1">
     <span>a</span>
     <span>b</span>
     <span>c</span>
 </div>

1.错误方式:不能用[]方式取jquery对象数组,如下:

 $(function() 
     var div_span = $("#div1 span");
     for( var i = 0; i < div_span.length; i++ ) 
         div_span.[i].html(i);
     
 );

这样无效.



2.可以用jquery的eq()方法来选择:

 for( var i = 0; i < div_span.length; i++ ) 
     div_span.eq(i).html(i);
 


3.可以用each()方法来遍历:

 $(function() 
     var div_span = $("#div1 span");
     var i = 0;
     div_span.each( function()
         $(this).html(i);
         i++;
     );
 );

each()遍历的时候,如果用$(this)得到的是jquery对象,如果直接用this,得到的是DOM对象


4.纯js代码获取的DOM对象数组,可以用[]的方式获取数组元素


后面3种是正确的方法,第一种是错误的,把他放在第一个,是因为要强调下,以后不能再犯同样的错误了,可要看仔细哈。

追问

不要复制粘贴的内容...

参考技术B <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>checkbox</title>
<script src="js/jquery-1.3.2.js" type="text/javascript"></script>
<script src="js/1.js" type="text/javascript"></script>
</head>

<body>
<table id="table1">
<tr>
<td><input type="checkbox" value="1"/>1</td>
<td id="k_1"><input type="text" name="student" id="s_1" readonly="true"/></td>
</tr>
<tr>
<td><input type="checkbox" value="2"/>2</td>
<td id="k_2"><input type="text" name="student" id="s_2" readonly="true"/></td>
</tr>
<tr>
<td><input type="checkbox" value="3"/>3</td>
<td id="k_3"><input type="text" name="student" id="s_3" readonly="true"/></td>
</tr>
<tr>
<td><input type="checkbox" value="4"/>4</td>
<td id="k_4"><input type="text" name="student" id="s_4" readonly="true"/></td>
</tr>
</table>
</body>
</html>

-------------------------------------------------------------
$(document).ready(function()
$("td[id^='k_']").hide();
var check = $(":checkbox"); //得到所有被选中的checkbox
var actor_config; //定义变量
check.each(function(i)
actor_config = $(this);
actor_config.click(
function()
if($(this).attr("checked")==true)
$("#k_"+$(this).val()).show();
else
$("#k_"+$(this).val()).hide();


);
);

);

jQuery相关知识

jQuery相关知识

jQuery 库中的 $() 是什么?
$() 函数是 jQuery() 函数的别称。$() 函数用于将任何对象包裹成 jQuery 对象,接着你就被允许调用定义在 jQuery 对象上的多个不同方法。你可以将一个选择器字符串传入 $() 函数,它会返回一个包含所有匹配的 DOM 元素数组的 jQuery 对象。

$(document).ready()方法和window.onload有什么区别?
(1)、window.onload方法是在网页中所有的元素(包括元素的所有关联文件)完全加载到浏览器后才执行的。
(2)、$(document).ready() 方法可以在DOM载入就绪时就对其进行操纵,并调用执行绑定的函数。

JQuery有几种选择器?
(1)、基本选择器:#id,class,element,*;
(2)、层次选择器:parent > child,prev + next ,prev ~ siblings
(3)、基本过滤器选择器::first,:last ,:not ,:even ,:odd ,:eq ,:gt ,:lt
(4)、内容过滤器选择器: :contains ,:empty ,:has ,:parent
(5)、可见性过滤器选择器::hidden ,:visible
(6)、属性过滤器选择器:[attribute] ,[attribute=value] ,[attribute!=value] ,[attribute^=value] ,[attribute$=value] ,[attribute*=value]
(7)、子元素过滤器选择器::nth-child ,:first-child ,:last-child ,:only-child
(8)、表单选择器: :input ,:text ,:password ,:radio ,:checkbox ,:submit 等;
(9)、表单过滤器选择器::enabled ,:disabled ,:checked ,:selected

如何用jQuery禁用浏览器的前进后退按钮?
实现代码如下:
<script type="text/javascript" language="javascript">
  $(document).ready(function() {
    window.history.forward(1);
    //OR window.history.forward(-1);
  });
</script>

jquery中$.get()提交和$.post()提交有区别吗?
相同点:都是异步请求的方式来获取服务端的数据;
异同点:
1、请求方式不同:$.get() 方法使用GET方法来进行异步请求的。$.post() 方法使用POST方法来进行异步请求的。
2、参数传递方式不同:get请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送给Web服务器的,这种传递是对用户不可见的。
3、数据传输大小不同:get方式传输的数据大小不能超过2KB 而POST要大的多
4、安全问题: GET 方式请求的数据会被浏览器缓存起来,因此有安全问题。

写出一个简单的$.ajax()的请求方式?
$.ajax({
url:‘http://www.baidu.com‘,
type:‘POST‘,
data:data,
cache:true,
headers:{},
beforeSend:function(){},
success:function(){},
error:function(){},
complete:function(){}
});

$(this) 和 this 关键字在 jQuery 中有何不同?
$(this) 返回一个 jQuery 对象,你可以对它调用多个 jQuery 方法,比如用 text() 获取文本,用val() 获取值等等。
而 this 代表当前元素,它是 JavaScript 关键词中的一个,表示上下文中的当前 DOM 元素。你不能对它调用 jQuery 方法,直到它被 $() 函数包裹,例如 $(this)。

jquery怎么移除标签onclick属性?
获得a标签的onclick属性: $("a").attr("onclick")
删除onclick属性:$("a").removeAttr("onclick");
设置onclick属性:$("a").attr("onclick","test();");

jquery中addClass,removeClass,toggleClass的使用。
$(selector).addClass(class):为每个匹配的元素添加指定的类名
$(selector).removeClass(class):从所有匹配的元素中删除全部或者指定的类,删除class中某个值;
$(selector).toggleClass(class):如果存在(不存在)就删除(添加)一个类
$(selector).removeAttr(class);删除class这个属性;

jQuery中的Delegate()函数有什么作用?
delegate()会在以下两个情况下使用到:
1、如果你有一个父元素,需要给其下的子元素添加事件,这时你可以使用delegate()了,代码如下:
$("ul").delegate("li", "click", function(){ $(this).hide(); });
2、当元素在当前页面中不可用时,可以使用delegate()

jQuery的事件委托方法bind 、live 、delegate 、on之间有什么区别?
(1)、bind 【jQuery 1.3之前】
定义和用法:主要用于给选择到的元素上绑定特定事件类型的监听函数;
语法:bind(type,[data],function(eventObject));
特点:
(1)、适用于页面元素静态绑定。只能给调用它的时候已经存在的元素绑定事件,不能给未来新增的元素绑定事件。
(2)、当页面加载完的时候,你才可以进行bind(),所以可能产生效率问题。
实例如下:$( "#members li a" ).bind( "click", function( e ) {} );
(2)、live 【jQuery 1.3之后】
定义和用法:主要用于给选择到的元素上绑定特定事件类型的监听函数;
语法:live(type, [data], fn);
特点:
(1)、live方法并没有将监听器绑定到自己(this)身上,而是绑定到了this.context上了。
(2)、live正是利用了事件委托机制来完成事件的监听处理,把节点的处理委托给了document,新添加的元素不必再绑定一次监听器。
(3)、使用live()方法但却只能放在直接选择的元素后面,不能在层级比较深,连缀的DOM遍历方法后面使用,即$(“ul”").live...可以,但$("body").find("ul").live...不行;
实例如下:$( document ).on( "click", "#members li a", function( e ) {} );
(3)、delegate 【jQuery 1.4.2中引入】
定义和用法:将监听事件绑定在就近的父级元素上
语法:delegate(selector,type,[data],fn)
特点:
(1)、选择就近的父级元素,因为事件可以更快的冒泡上去,能够在第一时间进行处理。
(2)、更精确的小范围使用事件代理,性能优于.live()。可以用在动态添加的元素上。
实例如下:
$("#info_table").delegate("td","click",function(){/*显示更多信息*/});
$("table").find("#info").delegate("td","click",function(){/*显示更多信息*/});
(4)、on 【1.7版本整合了之前的三种方式的新事件绑定机制】
定义和用法:将监听事件绑定到指定元素上。
语法:on(type,[selector],[data],fn)
实例如下:$("#info_table").on("click","td",function(){/*显示更多信息*/});参数的位置写法与delegate不一样。
说明:on方法是当前JQuery推荐使用的事件绑定方法,附加只运行一次就删除函数的方法是one()。
总结:.bind(), .live(), .delegate(),.on()分别对应的相反事件为:.unbind(),.die(), .undelegate(),.off()。

以上是关于什么是jquery对象数组的主要内容,如果未能解决你的问题,请参考以下文章

什么是 jQuery 对象?

使用 jQuery 将类添加到 DOM 对象数组的正确方法是啥?

jQuery对象数组获取一个项目作为jQuery对象

jquery面试题

问个jquery的白痴问题:如何输出object的值

jQuery相关知识