Jquery如何循环进行?

1 Jquery ID 有 123456 N个数字。

2 我想实现它进行循环,不用一个一个写

$(document).ready(function(){
  $(".hi").click(function(){
     //获取id
     var ids = $(this).attr('id');
     //如果id=china1 执行ok 否则 no
     if(ids == "china1"){
           alert("OK");
     }else{
          alert("NO");
     }
  });
});

3 现在问题是 有很多 china2 china3 china4 china5 china6 我不想一个一个都写出来

 if(ids == "china2"){
           alert("OK");
     }else{
          alert("NO");
     }
     
      if(ids == "china3"){
           alert("OK");
     }else{
          alert("NO");
     }
     
     .....

有办法循环吗?

阅读 2.9k
4 个回答

不明白你要干啥,如果你的代码要如下,上边的答案全部都不符合。

$(document).ready(function(){
  $(".hi").click(function(){
     //获取id
     var ids = $(this).attr('id');
     
     //如果id=china1 执行ok 否则 no
     if(ids == "china1"){
           alert("OK");
     }else{
          alert("NO");
     }
     
     if(ids == "china2"){
           alert("OK");
     }else{
          alert("NO");
     }
     
     if(ids == "china3"){
           alert("OK");
     }else{
          alert("NO");
     }
     
     //...
  });
});

包含类 hi 的元素,点击后:
如果符合一项:弹出5次No,1次OK
如果都不符合:弹出6次No。

如果您确认这就是你要实现的功能,如下代码就是正确答案

$(document).ready(function(){
  $(".hi").click(function(){
    //获取id
    var ids = $(this).attr('id');
     
    var idList = ["china1", "china2", "china3", "china4","china5", "china6"];
     
    for( var i = 0 ; i < idList.length ; i++ ){
        if(ids == idList[i] ){
           alert("OK");
        }else{
          alert("NO");
        }
    }
  });
});

每个id对应的函数不同

查表法

// 用一个函数表,表达一组id和对应执行的函数的映射。
var funcTable = {
  chain1: function () {
    console.log('run id1')
  },
  chain2: function () {
     console.log()
  },
  // ...
};

var ids = ['chain1', 'chain2', 'chain3'];

function mapFuncById() {
  ids.forEach(function (id) {
    funcTable[id] && funcTable[id]()
  });
} 

每个id对应的函数类似

var ids = ['chain1', 'chain2', 'chain3'];

function runFuncById() {
  ids.forEach(function (id) {
    var n = id.split('chain')[1]; // 把数字取出来
    if (n !== undefined) {
      common(n);
    }
  });
}

function common(n) {
  console.log(n);
}

是id匹配china+数字就可以吗?/china[0-9]+$/.test(ids)正则匹配就可以了。

var IDS = ["china1", "china2", "china3", "china4", "china5"];
var ids = "china3";
if (IDS.indexOf(ids) >= 0) {
    alert("OK");
} else {
    alert("NO");
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进