2012-01-23 234 views
0

我有一个DIV与下面的属性jQuery的两个属性(动态替换)

<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_idobj.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();  

}”,

谢谢

问候

基兰

回答

3

问题是你这样做:至于JavaScript的

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

关心的是,这是一个单一的选择器字符串。既然你要选择的部件来填充的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(); 
} 
+0

谢谢。最初我尝试追加,但遇到了一些其他的错误。您的解决方案帮助我找到了正确的解决方案。由于我已经在单引号(成功函数)中,在“单引号”之前添加'\'帮助了我。再次感谢 – Bujji

1

我很困惑在这里的语法(什么语言是这个in?为什么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"\],在技术上是必需的。

+0

这是YII框架 – Bujji

+0

@lonesomeday FYI,无论是技术上需要添加引号取决于属性值(在这种情况下,这是未知的,所以它是绝对是一个好主意添加引号)。请参阅[选择器(CSS和JavaScript)_中的_Unquoted属性值](http://mathiasbynens.be/notes/unquoted-attribute-values#css)。 –

+0

@MathiasBynens从技术上说,它是jQuery所需要的,即使它传递给'qSA'。查看我链接到的API页面。 – lonesomeday

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

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

一个正确的解决办法是:

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