【问题标题】:jQuery saving data in array on click?jQuery单击时将数据保存在数组中?
【发布时间】:2013-01-24 20:44:33
【问题描述】:

我想使用基于点击的 jquery 将数据保存在数组(或任何最佳方法)中。我已经设置了 jquery,其中用户只能单击 2 个元素(<div> 标签),如果他们想选择其他内容,他们需要取消选择他们选择的元素之一。这些元素在我要存储的标签中包含“data-id=”。

如何仅保存已选择项目的数据 ID。这是否意味着如果用户取消选择,则需要删除数组中的数据(或首选哪种最佳方法)?

$('.media-search').hover(function(){
    var $this = $(this);
    var dataid = $this.data('id');
    $this.toggleClass('highlight');
}).click(function(){
if($('.selectMedia').length < 2 || $(this).hasClass('selectMedia'))
{
    $(this).toggleClass('selectMedia');
}else{

    alert('need to unselect item')      

}
});     

谢谢!

【问题讨论】:

标签: ajax arrays jquery multidimensional-array


【解决方案1】:

我不能 100% 确定这就是您所要求的,但是如果您需要一个数组,您可以在任何时候使用此函数并将其存储在一个变量中:

function getArray() {
    var data = [],
        media = $('.selectMedia');

    for(var i = 0; i < media.length; i++) {
        data[i] = media.eq(i).attr("data-id");
    }

    return data;
}

我的建议是在您切换类之后click 函数中使用此函数。

另外,我注意到您在 hover 方法内声明了 dataid,并且该变量将不再存在于该方法之外,即一旦您完成悬停,该值现在超出范围。因此,如果您确实声明了一个数组来存储此方法的结果,请在任何事件处理程序外部执行它,以便它保持在范围内。

【讨论】:

    【解决方案2】:

    我不确定我是否理解你,但我的解决方案是

    var dataIds = new Array();
    
    $('.media-search').click(function(){
     if($(this).hasClass('selectMedia')){
      $(this).removeClass('selectMedia');
      dataIds.splice(dataIds.indexOf($this.data('id')),1); 
     }else{
      if(dataIds.leght==2){
       $(this).addClass('selectMedia');
       dataIds.push($this.data('id'));
      }else{
       alert("only 2 items");
      }
     }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-03
      • 2013-11-09
      • 2012-05-07
      • 1970-01-01
      相关资源
      最近更新 更多