将查询参数与选择器类进行比较以进行单击操作

时间:2017-02-07 22:35:22

标签: javascript jquery

我有一个div列表,点击每个将显示另一个div。我目前有一个脚本,它将获取查询参数值(e.g: http://domain.com/?id=1),剥离id的值并使用该值触发相应的div作为类。我目前的实施是:

var param = window.location.search.split('?id=')[1];
  if(param == 1){
    $(".1").click();
  }
  else if(param == 2){
    $(".2").click();
  }
  else if(param == 3){
    $(".3").click();
  }
  else if(param == 4){
    $(".4").click();
  }
  else if(param == 5){
    $(".5").click();
  }
  else if(param == 6){
    $(".6").click();
  }
  else if(param == 7){
    $(".7").click();
  }
  else if(param == 8){
    $(".8").click();
  }
  else if(param == 9){
    $(".9").click();
  }
  else if(param == 10){
    $(".10").click();
  }
});

我试图创建一个循环来遍历所有选择器:

var array = [];
$('.list-group li').each(function(idx, el){
    array.push(el);
});

但我无法弄清楚如何将查询参数的值与数组中的值进行比较,并选择数组值来触发类。简单地循环遍历列表组的主要原因之一是有超过10个项目的事件。我可能正在考虑这个功能,可能只是使用原始实现,但认为这可能更清晰。

5 个答案:

答案 0 :(得分:1)

您可以通过构建选择器字符串来删除if语句,如下所示:

var param = window.location.search.split('?id=')[1];
$("." + param).click();

  • 获取参数号
  • 选择具有param评估为
  • 的类值的所有元素
  • 在选择
  • 上调用click()方法

答案 1 :(得分:1)

首先尝试根据输入参数创建选择器,然后检查是否存在这样的div,如果是,则调用其click方法:

    var id = window.location.search.split('?id=')[1]; // grab the input
    var selector = '.' + id;                          // construct the selector
    var div = $(selector);                            // search for the div
    if(div.length > 0) {                              // check if the div is found
        div.click();                                  // perform the click
    }

答案 2 :(得分:1)

因为你已经有了var 所以你可以这样做,

var param = window.location.search.split('?id=')[1]; $('.'+param).click();

无需创建新数组

答案 3 :(得分:0)

假设你有一个类名数组:

if( divClasses.indexOf(param) > -1 ){
  $("."+param).click();
}

答案 4 :(得分:0)

试试这个

var array = [];
$('.list-group li').each(function(idx, el){
    array.push(el);
});
var param = window.location.search.split('?id=')[1];
param = parseInt(param);
if(param && array[param]) {
    array[param].click();
}