如何比较<;的所有ID;李>;使用javascript或jquery数组?

如何比较<;的所有ID;李>;使用javascript或jquery数组?,javascript,jquery,html,arrays,Javascript,Jquery,Html,Arrays,我有一个如下所示的数组: aVN = new Array(); aVN.push(new Array('CET', 'July', 'Birthday', '20110704')); aVN.push(new Array('CGT', 'July', 'Anniversary', '20110705')); 我的html中还有多个元素,如下所示: <li id="thismonth"> <ul> <li id="20110701">1

我有一个如下所示的数组:

aVN = new Array();
aVN.push(new Array('CET', 'July', 'Birthday',    '20110704'));
aVN.push(new Array('CGT', 'July', 'Anniversary', '20110705'));
我的html中还有多个
  • 元素,如下所示:

    <li id="thismonth">
       <ul>
          <li id="20110701">1</li>
          <li id="20110702">2</li>
          <li id="20110703">3</li>
          <li id="20110704" onclick="displayevent();" class="holiday">4</li>
          <li id="20110705">5</li>
       </ul>
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 我想检查
  • 的ID中是否存在来自数组
    aVN
    20110704

    如果ID和数组值匹配,那么当我单击特定的
  • 时,我想显示“生日”(数组中的文本)

    aVN = new Array();
    aVN.push(new Array('CET', 'July','Birthday', '20110704'));
    aVN.push(new Array('CGT', 'July','Anniversary', '20110705'));
    
    for(var i = 0;i<avN.length;i++){
       if($("#"+avN[i][3]).length){
          $("#"+avN[i][3]).click(function(){
             alert(avN[i][2]);
          }
       }
    }
    
    aVN=newarray();
    aVN.push(新数组(“CET”、“七月”、“生日”、“20110704”);
    aVN.push(新阵列(“CGT”、“七月”、“周年”、“20110705”);
    对于(变量i=0;i
    
    var aVN=[
    [“CET”、“七月”、“生日”、“20110704”],
    ['CGT'、'七月'、'周年'、'20110705']
    ];
    函数displayEvent(text){//我不确定您想在这里做什么
    console.log(文本);
    }
    $(函数(){
    $('li.menu')。单击(函数(){
    对于(变量i=0;i
    
  • 1
  • 2
  • 3
  • 4
  • 5
  • (感谢Damon指出id不能以数字字符开头。)

    更多的“jquerysh”方法是使用公共前缀和唯一后缀(.allineed-1、.allineed-2等)设置一些类,然后使用适当的css选择器-
    $(document.body)查找内容。查找(.allineed-“+id)
    。不过,如果您坚持,也可以用同样的方法使用ID


    此外,不确定,但看起来您最好保留一个散列而不是数组,因为ID是唯一的(如果我们不关心排序的话)。执行反向操作(映射某些数据的lis)会更容易一些。请记住,还有一些“jquerysh”方法——使用数据将dom对象与某些数据关联)))

    因此,您基本上希望获取所有
  • 元素,循环遍历每个元素并检查其
    id
    以查看其是否匹配条件,然后对匹配的元素执行某些操作?元素id不能以数字开头。它们必须以字母开头。@HTML5中的damon,这个限制被取消了。@Matt:太好了;但这并不意味着我们应该开始用严格的数字ID来堆积代码。不只是现在。你有语法错误,而且你使用了一种糟糕的创建数组的方法。这就是我想要做的…我已经做了一个日历…每天都由
  • 组成…就像上面的例子…现在我的主要目标是检查数组中的日期是否匹配
  • 的日期id…如果匹配(例如如果“20110705”从阵列匹配id为“menu_20110705”)的
  • 然后该
  • 的颜色应该改变,数组中的其他数据,即:生日应该显示在鼠标上方这是我想做的…我已经制作了一个日历…每天都由
  • 组成…就像上面的例子…现在我的主要目的是检查数组中的日期是否与
  • 的日期id匹配…如果匹配(例如如果数组中的“20110705”与id为“menu\u 20110705”的
  • 匹配然后
  • 的颜色应该改变,数组中的其他数据,例如:生日应该显示在鼠标上这在HTML5中是不正确的。@马特:不是每个人都在使用HTML5。嗯,这里的闭包有一个问题。通过反转查找来修复它。这是我想做的…我制作了一个日历。
  • 的每一天都是由
  • 组成的。。。像上面的例子一样…现在我的主要目的是检查数组中的日期是否与
  • 的日期id匹配…如果匹配(例如,如果数组中的“20110705”与id为“menu\u 20110705”的
  • 匹配)然后,该
  • 的颜色应该改变,数组中的其他数据,即:生日应该显示在鼠标上。您为什么会使用
    $(document.body)。查找(“.allineed-”+id)
    而不是
    $(“.allineed-”+id)
    ?@Matt Ball-只是为了说明我们可以传递上下文。这是我想要做的…我制作了一个日历…每天都由
  • 组成…就像上面的例子…现在我的主要目的是检查数组中的日期是否匹配
  • 的日期id…如果匹配(例如,如果数组中的“20110705”与
  • 的id匹配)菜单_20110705“),则该
  • 的颜色应改变,并且阵列中的其他数据(即:生日)应显示在鼠标上方
    <script type="text/javascript">
    
    var aVN = [
        ['CET', 'July', 'Birthday',    '20110704'],
        ['CGT', 'July', 'Anniversary', '20110705']
    ];
    
    function displayEvent(text) { // I'm not sure what you wanted to do here
        console.log(text);
    }
    
    $(function() {
       $('li.menu').click(function() {
          for (var i = 0; i < aVN.length; i++) {
              if (this.id == 'menu_' + aVN[i][3]) {
                 displayEvent(aVN[i][2]);
              }
          }
       }).css({cursor: 'pointer'});
    });
    </script>
    
    <ul>
       <li class="menu" id="menu_20110701">1</li>
       <li class="menu" id="menu_20110702">2</li>
       <li class="menu" id="menu_20110703">3</li>
       <li class="menu" id="menu_20110704">4</li>
       <li class="menu" id="menu_20110705">5</li>
    </ul>