点击时jQuery在数组中保存数据?

时间:2013-02-09 00:25:53

标签: ajax arrays jquery multidimensional-array

我想使用基于点击的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')      

}
});     

谢谢!

2 个答案:

答案 0 :(得分:0)

我不是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功能之后使用此功能切换课程。

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

答案 1 :(得分:0)

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

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