2011-10-19 45 views
1

我對jQuery有點新鮮,不知道這是否可能,所以在這裏。在AJAX響應中使用jQuery的父函數

基本上,我使用ajax get請求,結果是在有效的html中,我已經可以選擇我想要的頁面上的特定對象,然後我想用它來獲取它的所有兄弟,這是代碼看起來:

$.ajax(
    { 
     type: 'GET', 
     url: requestUrl, 
     dataType: 'html', 
     success: function(data, textStatus) 
     { 
      var allLinks = $(data).find("a"); 
      allLinks.each(function(){ 
         if($(this).text() == 'selectme'){ 
          $(this).parent().children("a").last().css('color', 'red'); 
         } 
        }); 
       } 
     }); 

這是響應的樣子:

<html> 
<body> 
    <a>irrelevant link 1</a> 
    <div> 
     <a>selectme</a> 
     <a>sibling 1</a> 
     <a>sibling 2</a> 
     <a>last sibling, which I want to get</a> 
    </div> 
    <a>irrelevant link 2</a> 
    <a>irrelevant link 3</a> 
</body> 
</html> 

所以,基本上,我想要得到的selectme鏈接的最後一個兄弟。是否有可能讓父母使用響應而不是實際的頁面元素,如果沒有,我怎麼能得到兄弟姐妹沒有得到任何不相關的鏈接?我可以使用「selectme」索引創建子選擇,但是如何在「不相關的鏈接2」之前停止?

+0

我知道我還可以用兄弟姐妹( 「A」),而不是母公司()。兒童( 「一」)。 – David

+0

爲了使用jQuery,您需要將ajax響應添加到實際的DOM結構中。 –

回答

1

您是否嘗試將響應添加到HTML文檔中?

$.ajax(
{ 
    type: 'GET', 
    url: requestUrl, 
    dataType: 'html', 
    success: function(data, textStatus) 
    { 
     $('body').html(data); // jQuery works on actual DOM, not just a string 
     var allLinks = $('body').find("a"); 
     allLinks.each(function(){ 
        if($(this).text() == 'selectme'){ 
         $(this).parent().children("a").last().css('color', 'red'); 
        } 
       }); 
      } 
    }); 
+1

好的,所以我選擇這個,因爲它是首先提交的。我將內容添加到展示廣告素材:無,並且正在按照我的意願進行。謝謝! – David

0

使用最後選擇

$("div a:last-child") 

$.ajax(
    { 
     type: 'GET', 
     url: requestUrl, 
     dataType: 'html', 
     success: function(data, textStatus) 
     { 
      $("div a:last-child").css('color', 'red');     
     }); 
+0

是的,但我不確定父母將永遠是一個div。這就是問題。如果將來更改代碼,我不希望它中斷。另外,不會在頁面上工作嗎?而不是響應數據? – David

+0

當然,它將在頁面上工作,而不是響應數據。您必須對數據屬性執行操作,或者在嘗試在DOM中查找它之前將其插入到DOM中 –