如何解决jQuery不删除元素
我在jquery中有用于删除先前的div标签和下一个.pclass的代码。 这是我的代码: $(\".delete\").bind(\"click\",function(){
var c = confirm(\"You sure want to delete this?\");
if(c){
/* $(this).next(\'.pclass\').remove();
$(this).prev(\'.rurl\').remove();
$(this).remove();*/
var text = $(this).prev(\'.rurl\').text();
var idvalue = $(this).prev(\'.rurl\').attr(\'id\');
var id = idvalue.split(\"|\");
$.ajax({
type: \"POST\",url: \"http://localhost:8080/cPEP_UI/Engine_rurl_delete\",data: \"text=\"+text+\"&eid=\"+id[1],dataType: \"json\",success: function(data) {
if(data.update == \"success\"){
$(this).next(\'.pclass\').remove();
$(this).prev(\'.rurl\').remove();
$(this).remove();
}
// $(\'#show\').show();
//$(\'#show\').html(data.update+\" \"+data.message).fadeOut(8000);
},error:function(xhr,err){
//alert(\"readyState: \"+xhr.readyState+\"\\nstatus: \"+xhr.status);
$(\'#show\').show();
// alert(xhr.responseText);
$(\'#show\').html(\"responseText: \"+xhr.responseText);
}
});
}
});
当我在调用$ .ajax函数之前使用remove方法时,它工作正常,但是当我将其放入成功时却无法正常工作。我已经检查了servlet文件返回的输出。工作正常。有任何想法吗?
解决方法
您必须将上下文存储在变量中,并将其传递给成功函数,如下所示:
var that = $(this);
$.ajax({
...
success: function(data) {
that.remove();
}
});
或者,您可以使用$.ajax
\的上下文选项:
$.ajax({
...
context: this,// set the context for all ajax-related callbacks
success: function(data) {
$(this).next(\'.pclass\').remove();
}
});
,在ajax.success方法中,“ 4”未指向您的元素。
像这样添加代码
var self = this;
var c = confirm(\"You sure want to delete this?\");
接着
if(data.update == \"success\"){
$(self).next(\'.pclass\').remove();
$(self).prev(\'.rurl\').remove();
$(self).remove();
}
,当您使用成功功能时,您将失去\“ this \”的范围。您可以将$(this)设置为变量并传递该变量。
,我想像一下,成功回调中的“ 4”可能不会引用被单击的元素,因为它不在ajax调用之外。将这些成功行移至它们自己的函数中,从成功处调用该函数,并在这些行的firebug中弹出一个断点以查看this
是什么。
,发出问题是因为执行成功处理程序时,此上下文会发生变化。
使用那个技巧。
请尝试以下代码:
$(\".delete\").bind(\"click\",function(){
var c = confirm(\"You sure want to delete this?\");
//#################################
//Capture the context of this so that it can be used in callbacks
var that = $(this);
if(c){
var text = $(this).prev(\'.rurl\').text();
var idvalue = $(this).prev(\'.rurl\').attr(\'id\');
var id = idvalue.split(\"|\");
$.ajax({
type: \"POST\",url: \"http://localhost:8080/cPEP_UI/Engine_rurl_delete\",data: \"text=\"+text+\"&eid=\"+id[1],dataType: \"json\",success: function(data) {
if(data.update == \"success\"){
//##########################
//Since the context of this was stored in that,use it.
that.next(\'.pclass\').remove();
that.prev(\'.rurl\').remove();
that.remove();
}
},error:function(xhr,err){
$(\'#show\').show();
$(\'#show\').html(\"responseText: \"+xhr.responseText);
}
});
}
});
,$(\".delete\").bind(\"click\",function(){
var c = confirm(\"You sure want to delete this?\");
if(c){
/* $(this).next(\'.pclass\').remove();
$(this).prev(\'.rurl\').remove();
$(this).remove();*/
var myElement = $(this);
var text = $(this).prev(\'.rurl\').text();
var idvalue = $(this).prev(\'.rurl\').attr(\'id\');
var id = idvalue.split(\"|\");
$.ajax({
type: \"POST\",success: function(data) {
if(data.update == \"success\"){
myElement.next(\'.pclass\').remove();
myElement.prev(\'.rurl\').remove();
myElement.remove();
//$(this).next(\'.pclass\').remove();
//$(this).prev(\'.rurl\').remove();
//$(this).remove();
}
// $(\'#show\').show();
//$(\'#show\').html(data.update+\" \"+data.message).fadeOut(8000);
},err){
//alert(\"readyState: \"+xhr.readyState+\"\\nstatus: \"+xhr.status);
$(\'#show\').show();
// alert(xhr.responseText);
$(\'#show\').html(\"responseText: \"+xhr.responseText);
}
});
}
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。