我在向动态添加元素(在JSON函数内部)中分配控件时遇到问题。
代码工作正常,但是当我添加$('div.prnt')。append(“hello”);在JSON内部,它不会分配$(“div.text”)。draggable();它。当我拿走JSON函数时,我只使用$('div.prnt')。append(“hello”);它可以直接使用。
我想JSON函数在调用可拖动控件之前停止添加元素。
<style>
div.prnt div.test
{
border: 1px solid #000;
width: 200px;
height: 200px;
}
</style>
<script type="text/javascript">
$(document).ready(function ()
{
var serviceurl = "WebServices/BusinessCardStudio.svc/gettextobjects/3457/17/17/1064/709/600/399";
$.getJSON
(
serviceurl,
function (data)
{
$.each(data, function (i, item)
{
$('div.prnt').append("<div class='object text'>hello</div>");
});
}
);
$("div.text").draggable();
});
</script>
<div class="prnt">
</div>
有没有人知道解决这个问题的方法?
提前致谢
答案 0 :(得分:3)
AJAX是异步。
getJSON()
调用将立即返回,您的draggable()
调用将在服务器回复之前运行。
您需要将draggable()
来电转移到回调中
这就是回调首先存在的原因。
答案 1 :(得分:1)
$("div.text").draggable();
。然后,服务器以JSON响应并执行您传递给它的函数。所以你正在制作一些尚未存在的可拖动的东西。
将可拖动的调用放入回调函数中,你应该很好。
答案 2 :(得分:1)
在ajax的成功中做到这一点,以便在ajax完成后确保完成它
$.getJSON
(
serviceurl,
function (data)
{
$.each(data, function (i, item)
{
$('div.prnt').append("<div class='object text'>hello</div>");
});
$("div.text").draggable();
}
);
});