ページの1つでドラッグアンドドロップにJqueryUIを使用していますが、何らかの理由で、ドロップ可能なドロップイベントに渡されるui.draggableオブジェクトの属性を取得できないようです。
ui.draggable.attr( "src")と$(ui.draggable).attr( "src")はどちらも未定義を返しますが、ui.draggable.html()と入力すると、htmlが返されます。何か案は?
ページの1つでドラッグアンドドロップにJqueryUIを使用していますが、何らかの理由で、ドロップ可能なドロップイベントに渡されるui.draggableオブジェクトの属性を取得できないようです。
ui.draggable.attr( "src")と$(ui.draggable).attr( "src")はどちらも未定義を返しますが、ui.draggable.html()と入力すると、htmlが返されます。何か案は?
私はそれを考え出した。解決策は、ui.draggable.find( "img")。attr( "src")を呼び出すことです。私は、ui.draggableオブジェクトが画像であると想定しました。
@ジョンの答えは正しいです。解決策は、ドラッグ可能な要素を事前に検査することなく、単にattr
メソッドを試すことです(そうしないと困惑します)。
jQuery UIの「ドラッグ可能」として宣言されたhtml要素が与えられた場合:
<img src='some/path/for/this/image' class='draggable_img' title='I am an image!' />
そして、この「div」をドロップ可能として指定します。
<div id='droppable_area'> </div>
<script>
$('img.candidate_thumbnail').droppable({
drop: function(event, ui) {
console.info('ui.draggable.title:' + ui.draggable.title);
console.info('ui.draggable.attr("title"):' + ui.draggable.attr('title'));
console.dir('ui.draggable:' + ui.draggable);
}
</script>
そして私は得た:
ui.draggable.title: undefined
ui.draggable.attr("title"): I am an image!
ui.draggable: [object Object]
-> No Properties
たとえば、この方法で行うことができます
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>New Web Project</title>
<script src="jquery-1.5.min.js"></script>
<script src="jquery-ui-1.8.16.custom.min.js"></script>
<style>
body{
margin:0;
padding:0;
}
.box{
display:block;
width:100px;
height:50px;
background-color:green;
border:1px solid #000;
}
#drop{
position:absolute;
top:220px;
left:220px;
width:250px;
height:250px;
border:1px solid red;
background:yellow;
z-index:1;
}
</style>
<script type="text/javascript">
$(document).ready(function(){
$('#boxBesar p').each(function(index,element){
$('#boxBesar p:eq('+index+')').css({
'border':'1px solid #000',
'width':'100px',
'height':'100px',
'position':'absolute',
'left':(index*200)+10,
'z-index':index+2,
'color':'black',
'text-align':'center',
'background':'#ccc'
})
})
.draggable({
revert:true
})
$('#drop').droppable({
drop:dropIt
})
function dropIt(event,ui){
//get an id
**var id=ui.draggable.attr('id')**
//test an id name
alert(id)
}
})
</script>
</head>
<body>
<div id="boxBesar">
<p id="b1">Box 1</p>
<p id="b2">Box 2</p>
</div>
<div id="parent">
<div id="drop" >
</div>
</div>
</body>
</html>
この答えは将来のユーザーに残されています。ui.draggableでコンソールログを1つ作成して展開し、次にui.draggable.context......などを実行します。ソース名が何であるかを理解できます。
console.log(ui.draggable.context.attributes.src.textContent)