题
我有很多类似的元素:
<div class="droppableP" id="s-NSW" style="width:78px; height:63px; position: absolute; top: 223px; left: 532px;">
<div class="sensible"></div>
</div>
他们都有类LotpableP,但显然ID的ID显然,我想在我正在黑客攻击的此脚本中考虑代码。原始脚本只有一个针对这些divs中的每个的特定选择器,但是代码都相似,除了它所执行的ID之外,这是父级的ID或其他具有与之相关的名称的Div。这是专门针对此部门的原始代码:
$("#s-NSW > .sensible").droppable( {
accept : "#i-NSW",
tolerance : 'intersect',
activeClass : 'droppable-active',
hoverClass : 'droppable-hover',
drop : function() {
$('#s-NSW').addClass('s-NSW');
$('#s-NSW').addClass('encastrada'); //can't move any more..
$('#i-NSW').remove();
$('#s-NSW').animate( {
opacity: 0.25
},200, 'linear');
checkWin();
}
});
这是我想考虑的方式,以便相同的代码可以完成所有这些代码,我最终也会链接,也许可以摆脱内联风格,但这是我的第一个尝试:
$(".droppableP > .sensible").droppable( {
accept : "#i" + $(this).parent().attr('id').substring(2),
tolerance : 'intersect',
activeClass : 'droppable-active',
hoverClass : 'droppable-hover',
drop : function() {
$(this).parent().addClass($(this).parent().attr('id'));
$(this).parent().addClass('encastrada');
$("#i" + ($this).parent().attr('id').substring(2)).remove();
$(this).parent().animate( {
opacity: 0.25
},200, 'linear');
checkWin();
}
});
我得到的错误是:
$(this).parent().attr("id")
是不确定的
非常感谢。我浏览了相关的问题,我知道最接近我的问题,事实证明他们根本不需要父函数。我有点菜鸟,所以如果这是一个愚蠢的问题,请不要对我大喊大叫。抱歉,我度过了糟糕的时光
解决方案 2
这是有效的解决方案:我需要每个迭代器。我认为那是魔术子弹。
$(".droppableP > .sensible").each(function() {
$(this).droppable( {
accept : "#i" + $(this).closest('.droppableP').attr('id').substring(1),
tolerance : 'intersect',
activeClass : 'droppable-active',
hoverClass : 'droppable-hover',
drop : function() {
//console.log($(this).closest());
$(this).closest('.droppableP').addClass($(this).closest('.droppableP').attr('id'));
$(this).closest('.droppableP').addClass('encastrado');
$("#i" + $(this).closest('.droppableP').attr('id').substring(1)).remove();
$(this).closest('.droppableP').animate( {
opacity: 0.25
},
200,
'linear'
);
checkWin();
}
});
});
其他提示
您必须将每个可拖动元素传递给您的功能进行处理,如果您的粪便接受它,则返回True。
尝试:
$(".droppableP > .sensible").droppable( {
accept : function(draggable) {
return $(draggable).attr("id") == "i" + $(this).parent().attr('id').substring(1);
},
不隶属于 StackOverflow