如何将<li>的所有ID与javascript或jquery数组进行比较?</li>

时间:2011-07-20 13:59:25

标签: 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>元素,如下所示:

<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>

我想检查数组20110704中的aVN是否出现在<li>的ID中。

如果ID和数组值匹配,那么当我点击该<li>时,我想显示“Birthday”(数组中的文本)。

3 个答案:

答案 0 :(得分:1)

<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>

Live demo.

(感谢Damon指出ID可能不是以数字字符开头。)

答案 1 :(得分:0)

试试这个

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]);
      }
   }
}

答案 2 :(得分:0)

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

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