使用jquery ui Sortable,当发生更改时,将执行函数“position”。它有一个ajax帖子,但是当触发位置时它不会被发送:
$('#col').Sortable(
{
accept: 'widget',
opacity: 0.5,
helperclass: 'helper',
change: positions,
handle: '.widget_title_bar'
}
);
然而,“位置”肯定有效,因为当我通过onclick动作正常调用时,ajax帖子会被发送。我唯一能想到的是,职位是用javascript而不是jquery编写的。我该如何解决这个问题?
编辑我在下面列出了职位:
function positions(){
var widgets = '';
var column = document.getElementById('col');
for(i = 0; i < col_1.childNodes.length; i++) {
var str1 = col_1.childNodes[i].className;
if(str1 && str1.match('widget')) widgets+='&c[1]['+i+']='+col_1.childNodes[i].id;
}
xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
xmlhttp.open('POST', '/positions.php', true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("widgetpositions="+widgets);
xmlhttp.send(null);
return true;
}
答案 0 :(得分:1)
Javascript标识符区分大小写,jQuery UI没有.Sortable()
函数,而是使用.sortable()
。
$('#col').sortable({
accept: 'widget',
opacity: 0.5,
helperclass: 'helper',
change: positions,
handle: '.widget_title_bar'
});
答案 1 :(得分:0)
假设sortable中的大写S在缩短代码时是一个拼写错误,这对我有用
错误必须在其他地方,请参阅演示:http://jsfiddle.net/doktormolle/xB8Wh/
(我只用“更新”替换了“更改”,但它也适用于“更改”)
来自变更(或任何其他可排序事件)的调用的唯一区别是范围 因此,如果您在函数内部使用 this - 关键字,那么如果函数是由sortable-event调用的,那么它将是#col,同时从onclick-event调用它(分配内联)这个将是全局窗口对象。
那么你在函数内使用 this 吗?