我有这个ajax调用,它在很大程度上起作用,但它似乎记住了之前的结果。编辑:这可能是由于将行为绑定到divid。
我的例程的结构是这样的:
调用ajax来搜索输入是否正常,从php获取响应。结果可以是“是”或“否”。
如果结果为是,请将持有者div的颜色更改为视觉提示,允许用户双击div以运行其他功能。如果没有,请不要允许双击div并且不要运行其他功能。
容易对吗?除非第一个ajax调用产生“是”结果,然后用户执行第二个ajax调用并产生“否”结果,否则用户可以点击“否”结果并执行针对“是”的操作'结果。
我尝试取消绑定dblclick,但它似乎不起作用,并且仍然允许单击无结果。这是我的jquery代码,我的常规javascript代码具有相同的不良行为。
编辑:这似乎是一个绑定问题。但我似乎可以取消绑定并销毁/删除以前绑定的行为。通过重复例程进一步测试似乎表明javascript确实将这些绑定对象保存在内存中,因为当我多次重复错误例程时,警报会回显尽可能多的“已保存”绑定对象。
我的部分代码如下,任何见解都表示赞赏。
TIA
编辑:解决方案是取消绑定双击,我应该输入类型dblclick而不是doubleclick
function search(input,divid) {
var queryString = "name=" + input+"&divid="+divid;
var url = "../l.php";
$.ajax({
type: 'get',
url: url,
data: queryString,
cache: false,
dataType: 'text',
timeout: 10000,
error: function(xhr, status, error) { alert('Search Error: '+ xhr.status+ ' - '+ error); },
success: function(response) {
var result = response;
var err = /:/;
var divid = "#"+divid;
if (result == "Yes" )
{
$(tldid).attr({'class':'tg1', 'title':'Doubleclick to save'});
var testword = 'xyz';
$(divid).dblclick(function() {
alert (testword);
$(divid).unbind('doubleclick');
});
else {
//alert (testword +" should not have been passed here, but it does");
$(divid).attr({'class':'tg2'});
}
}//success
});
}//end
答案 0 :(得分:0)
您应该将$(divid).unbind('doubleclick');
更改为$(divid).unbind('dblclick');
。