jquery查找数组元素是不是存在的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery查找数组元素是不是存在的问题相关的知识,希望对你有一定的参考价值。
<div cladd="box">
<ul>
<il>一</li>
<il>二</li>
<il>三</li>
<il>四</li>
<il>五</li>
</ul>
<button class="button">全选</button>
</div>
<div cladd="box">
<ul>
<il>六</li>
<il>七</li>
<il>八</li>
<il>九</li>
<il>十</li>
</ul>
<button class="button">全选</button>
</div>
var arr=[];
效果:有一个数组。点击当前box下button的时候,如果此时数组中已存在当前box下的所有的li的值,那就在数组中删除当前box下的所有li值,如果没有或有几个但不是全部(因为li有另外的点击自己增加自己的值到数组的效果,所以不确定此时数组里li的值的个数),就把当前box下的所有li的值添加进数组(已存在的就不用加了,不要重复)
规定数组存放的为1,2,3,4这样的数字。
首先定义一个方法,查询数组中是否存在当前所点击的全部,参数为一个数组!
function checkIsAll(a)for(var i = 0;i < a.length;i++)
if(!arr.indexOf(a[i]))
return false;//如果有一个不存在就返回false
return true;
//button的点击事件
$('.button').click(function()
//如果点击的第一个button就给数组为[1,2,3,4,5],如果点击的第二个就给[6,7,8,9,10]
var a = [[1,2,3,4,5],[6,7,8,9,10]][$('.button').indexOf($(this))];
//判断当前点击的里面的是否全部存在数组中
if(checkIsAll(a))
//全部存在,循环删除arr里面对应的a
for(var i = 0;i < a.length;i++)
arr.splice(arr.indexOf(a[i]),1);
else
//不是全部存在
for(var i = 0;i < a.length;i++)
if(arr.indexOf(a[i])==-1)
arr.push(a[i]);
);
望采纳
追问规定数组存放的为1,2,3,4这样的数字
不是数字放的,是字符串
怎样的字符串? 如果只是字符串同样可以用indexOf来查找
参考技术A 首先要生成一个空的数组var jQueryArr = [];
jQueryArr[0] = $(".box:eq(0)").children().children("li").splice(0 , $(".box:eq(0)").children().children("li").length);//初始化数组,保留jQuery元素数组的一些方法,这里可用循环遍历,each也行
然后就是判断了,楼上的写得差不多了都
哦,对了,这里不要用push了,应该用 concat 来连接两个数组arr_a.concat(arr_b); 参考技术B <!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="jquery-1.8.0.min.js"></script>
<script type="text/javascript">
$(function()
var arr = [];
var buttons = $(".buttonclass");
buttons.click(function()
var value = $(this).prev();
var content = value.text();
alert(content);
//下面把content里面的内容与数组里面的比较就ok了
//楼上有个标签写错了哟
);
)
</script>
</head>
<body>
<div class="box">
<ul>
<li>一</li>
<li>二</li>
<li>三</li>
<li>四</li>
<li>五</li>
</ul>
<button class="buttonclass">全选</button>
</div>
<div class="box">
<ul >
<li>六</li>
<li>七</li>
<li>八</li>
<li>九</li>
<li>十</li>
</ul>
<button class="buttonclass">全选</button>
</div>
</body>
</html>追问
最关键的比较你不说
参考技术C <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>
<head>
<script src="js/jquery-1.10.1.min.js" type="text/javascript"></script>
<script>
var arr=[];
$(function()
$("li").click(function()
arr.push(this.innerHTML);
);
$(".button").click(function()
var li=$(this).parent().find("li");
var flag=false;
for(var i=0;i<li.length;i++)
if(arr.indexOf(li[i].innerHTML)<0)
arr.push(li[i].innerHTML);
flag=true;
alert(arr);
if(!flag)
for(var i=0;i<li.length;i++)
arr.splice(arr.indexOf(li[i].innerHTML),1);
alert(arr);
);
)
</script>
</head>
<body>
<div class="box">
<ul>
<li>一</li>
<li>二</li>
<li>三</li>
<li>四</li>
<li>五</li>
</ul>
<button class="button">全选</button>
</div>
<div class="box">
<ul>
<li>六</li>
<li>七</li>
<li>八</li>
<li>九</li>
<li>十</li>
</ul>
<button class="button">全选</button>
</div>
</body>
</html>
JavaScript查找数组是否存在指定元素
利用JavaScript的函数有两种方式
1.jQuery
jQuery.inArray( value, array [, fromIndex ] )
-
value类型: Anything要查找的值。
-
array类型: Array一个数组,通过它来查找。
-
fromIndex类型: Number数组索引值,表示从哪里在开始查找。默认值是0,这将查找整个数组。
$.inArray()
方法类似于JavaScript的原生.indexOf()
方法,没有找到匹配元素时它返回-1。如果数组第一个元素匹配value
(参数) ,那么$.inArray()
返回0。
2.indexof
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
语法
stringObject.indexOf(searchvalue,fromindex)
参数 | 描述 |
---|---|
searchvalue | 必需。规定需检索的字符串值。 |
fromindex | 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。 |
说明
该方法将从头到尾地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的开头(没有指定 fromindex 时)。如 果找到一个 searchvalue,则返回 searchvalue 的第一次出现的位置。stringObject 中的字符位置是从 0 开始的。
提示和注释
注释:indexOf() 方法对大小写敏感!
注释:如果要检索的字符串值没有出现,则该方法返回 -1。
以上是关于jquery查找数组元素是不是存在的问题的主要内容,如果未能解决你的问题,请参考以下文章