我想通过拖放来配对元素。匹配方法是div内的隐藏文本。用户必须从“.answerContainer”中拖动元素并将其拖放到正确的“.circle”div。
HTML代码:
<div class="circleContainer">
<div class="circle first lineOne"> <span class="question">1</span></div>
<div class="circle second lineOne"><span class="question">2</span></div>
<div class="circle third lineTwo"> <span class="question">3</span></div>
</div>
<ul class="answerContainer">
<li class="first"> <span class="answer">1</span></li>
<li class="second"> <span class="answer">2</span></li>
<li class="third"> <span class="answer">3</span></li>
</ul>
我正在尝试这个,但它不起作用:
$( ".answerContainer li" ).draggable({
revert: "invalid",
containment: "document",
cursor: "move"
});
$(".circle").each(function(i){
$this=$(this);
$this.droppable({
accept: function(event, ui) {
if($this.text()==event.text()){
return true;
}
},
activeClass: "ui-state-highlight",
drop: function( event, ui ) {
deleteAnswer( ui.draggable );
}
});
});
答案 0 :(得分:0)
两个问题:
text()
可能匹配也可能不匹配。请改用.find('span').text()
。$(this)
而不是$this
,因为每次each
命令都会覆盖$ this。所以:
$(".circle").each(function(i){
$this=$(this);
$this.droppable({
accept: function(element) {
if($(this).find('span').text()==element.find('span').text()) {
return true;
}
},
drop: function( event, ui ) {
deleteAnswer( ui.draggable );
}
});
});