2009-09-28 18 views
0

我使用AJAX接收XML響應,然後我需要操作。通過使用jQuery的上下文選項,我可以從XML數據中進行選擇,但我仍然無法寫入它。使用jQuery處理包含XML的變量?

$('blah', xml) 

選擇XML就好了,但

$('blah', xml).removeClass('myClass') 

似乎什麼也不做XML變量!我如何才能實現我正在尋找的功能?

例子:

var data = null; 

$(document).ready(function(){ 
$.ajax({ 
    type:"GET", 
    url:"blah/blah.jsp", 
    success:function(msg) 
    { 
     data = msg; 
     init(); 
    } 
}); 

function init() 
{ 
    $('#myElement', data).removeClass('hidden');//removeAttr('class') also fails 
} 

示例XML文件:

<root> 
<div> 
<!--lots of content --> 
</div> 
<div> 
<p id = "myElement<->" class = "hidden"> 
    Test! 
</p> 
</div> 
</root> 
+0

我們可以看到XML文件嗎? – 2009-09-28 21:16:04

+0

addClass/removeClass是HTML特定的,它們修改名爲class的屬性。你能告訴我們,如果removeAttr的作品? – 2009-09-28 21:25:45

+0

removeAttr不起作用。 – 2009-09-28 21:43:48

回答

1

這對我的作品。

<html> 
<head> 
    <title>Test Page</title> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> 
    <script type="text/javascript"> 
    $(function() 
    { 
    var data = null; 
    $.ajax({ 
     type:"GET", 
     url:"sample.xml", 
     dataType: 'xml', 
     success:function(msg) 
     { 
      init($(msg)); 
     } 
    }); 

    function init($xml) 
    { 
     var $myElement = $xml.find('#myElement'); 
     $myElement.removeAttr('class'); 
     console.log($myElement); 
    } 
    }); 
    </script> 
</head> 

<body> 

</body> 
</html> 

而這裏的sample.xml中

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
<div> 

</div> 
<div> 
<p id = "myElement" class = "hidden"> 
    Test! 
</p> 
</div> 
</root> 

所以一定要與"xml"請求爲dataType選項,你的JSP頁面返回用正確的Content-Type頭內容(文本/ xml)

+0

*重複點擊投票,希望它可以拍攝到100. * jsp響應頭上的內容類型。多麼微妙的錯誤。 – 2009-09-28 22:47:00

+0

也要注意需要使用msg.d而不僅僅是msg的可能性。 http://encosia.com/2009/02/10/a-breaking-change-between-versions-of-aspnet-ajax/ – Maslow 2010-02-17 14:52:48