这是我第一次使用jquery并且我试图想要制作jquery remove(),只删除一个具有特定类的项目,而不是每个具有相同类的项目。
我的代码是这样的 的 jquery的:
$(function() {
$(".vote").click(function()
{
var id = $(this).attr("id");
var name = $(this).attr("name");
var dataString = 'id='+ id ;
var parent = $(this);
if (name == 'up') {
$(this).fadeIn(600).html('<span class="glyphicon glyphicon-ok"></span>');
$.ajax({
type: "POST",
url: "up_vote.php",
data: dataString,
cache: false,
success: function(html) {
parent.html(html);
$(".vote").remove();
$(".escondido").css("display", "block");
}
});
}
(代码继续以其他方式拒绝投票)
单击向上按钮后,jquery代码将删除包含类投票的按钮,但如果我有2个具有类投票的按钮,则两者都将被删除。我想删除单击的一个。任何想法如何?
<button type="button" class="btn btn-success btn-xs vote up" name="up" id="'.$reg['id'].'">BUTTON</button>
谢谢你!
答案 0 :(得分:4)
你需要在成功回调中使用点击范围添加对此的引用,然后jQuery就像你已经jQueried其他这样:
$(function() {
$(".vote").click(function()
{
var id = $(this).attr("id");
var name = $(this).attr("name");
var dataString = 'id='+ id ;
var parent = $(this);
var _this = this;
if(name=='up')
{
$(this).fadeIn(600).html('<span class="glyphicon glyphicon-ok"></span>');
$.ajax({
type: "POST",
url: "up_vote.php",
data: dataString,
cache: false,
success: function(html)
{
parent.html(html);
$( _this ).remove();
$( ".escondido" ).css( "display", "block" );
}
});
}
});
作为奖励,这里是一个重构版本,可以节省一些cpu周期并使代码稍微漂亮:
$(function() {
$(".vote").click(function()
{
var $this = $(this),
id = $this.attr("id"),
name = $this.attr("name"),
dataString = 'id='+ id;
if(name=='up')
{
$this.fadeIn(600).html('<span class="glyphicon glyphicon-ok"></span>');
$.ajax({
type: "POST",
url: "up_vote.php",
data: dataString,
cache: false,
success: function(html)
{
$this.html(html);
$this.remove();
$( ".escondido" ).css( "display", "block" );
}
});
}
});
});
答案 1 :(得分:2)
您可以声明引用$(this)
的新变量,以便可以在$.ajax()
函数的范围内使用它。或者,您也可以声明context
函数的$.ajax()
属性,如下所示:
$.ajax({
type: "POST",
url: "up_vote.php",
data: dataString,
cache: false,
context: this, // Passes $(this)
success: function(html) {
parent.html(html);
$(this).remove();
$(".escondido").css("display", "block");
}
});