Jquery删除基于两个属性(动态替换)

时间:2012-01-23 08:23:46

标签: jquery

我有一个具有以下属性的DIV

<div car_id='1' car_type='4'><br>GM<a href="#" id="yt0"><img title="Delete" src="/cardelete/images/delete.png" alt="Delete" /></a></div>

基本上它有两个属性

car_id='1' car_type='4'

在我的Ajax成功函数上,我想删除上面的内容。我能够提醒 obj.car_id obj.car_type

但删除部分不起作用。有人可以为它提供正确的语法吗?

"success"=>'js:function(data){                                                             
    var obj = jQuery.parseJSON(data);
    alert(obj.car_id);
    alert(obj.car_type);
   $("div[car_id=obj.car_id][car_type=obj.car_type)".remove();    

}”,

谢谢

此致

基兰

4 个答案:

答案 0 :(得分:3)

问题是你这样做:

$("div[car_id=obj.car_id][car_type=obj.car_type)".remove();    

就JavaScript而言,这是一个单一的选择器字符串。由于您希望选择器的某些部分填充obj.car_idobj.car_type的值,因此您需要使用字符串连接,如下所示:

function(data){                                                             
  var obj = jQuery.parseJSON(data);
  alert(obj.car_id);
  alert(obj.car_type);
  $('div[car_id="' + obj.car_id + '"][car_type="' + obj.car_type + '"]').remove();
}

答案 1 :(得分:2)

$('div[car_id="'+obj.car_id+'"][car_type="'+obj.car_type+'")'.remove();  

答案 2 :(得分:1)

我对这里的语法感到困惑(这是什么语言?为什么JS函数存储为字符串?),但是有一些明显的问题。第一个是你没有将变量插入到字符串中 - 你将它们的名称视为字符串文字。第二个是你没有正确地关闭选择器,如果你使用代码突出显示就很明显,这是不可能的,因为函数存储为字符串。

function(data){                                                             
    var obj = jQuery.parseJSON(data);
    alert(obj.car_id);
    alert(obj.car_type);
    $("div[car_id='" + obj.car_id + "'][car_type='" + obj.car_type + "'])".remove(); 
}

另请注意,我已在attribute equals selector \[name="value"\]插入引号,因为技术上是必需的。

答案 3 :(得分:1)

您需要转义字符串以使用对象属性(car_id和car_type),而不仅仅是字符串“obj.car_id”和“obj.car_type”。您还错误地关闭了属性选择器(缺少最后的']')和您的jQuery选择器。

正确的解决方案是:

$("div[car_id='" + obj.car_id + "'][car_type='" + obj.car_type + "']").remove();