jQuery点击保存数组中的数据



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

谢谢!

我不能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,并且该变量将不再存在于方法之外,即,一旦您完成悬停,该值现在就超出了范围。因此,如果您确实声明了一个数组来存储此方法的结果,请在任何事件处理程序的外部执行,以便它将保留在作用域中。

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

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

相关内容

  • 没有找到相关文章

最新更新