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