2012-01-16 71 views
1

我正在編寫一些代碼來通過Ajax調用生成錨元素到服務器。該列表已成功生成。但是當我試圖通過它的類選擇錨元素時,我什麼也沒有找到。我的代碼有問題嗎?有什麼建議麼?我很感謝你的反饋。在這裏感謝jQuery:無法選擇動態生成的錨元素

是我的代碼

$(document).ready(function(){ 
    generate_link('somelink.php', '#link ul'); 

    $(".mylink").css("border","3px solid red"); //this is not works :-(

}); 

function generate_link(method_url, target) 
{ 

     $.ajax({ 
      type: 'GET', 
      url: method_url, 
      dataType: 'json', 
      success: function(data) { 
      var str=''; 
      for(i=0;i<data.length;i++){ 
       str = str + ('<li><a href="' + data[i]['anchor'] +'" class="mylink"></li>'); 
        } 
      $(target).html(str); 
      } 
     }); 
} 

回答

1

既然不是當你做你的AJAX調用,不被應用的頁面加載和CSS當正在應用該CSS到AJAX添加的元素。嘗試移動你設置邊框的3px固體紅到success回調線,像這樣:

$(document).ready(function(){ 
    generate_link('somelink.php', '#link ul'); 
}); 

function generate_link(method_url, target) 
{ 

     $.ajax({ 
      type: 'GET', 
      url: method_url, 
      dataType: 'json', 
      success: function(data) { 
      var str=''; 
      for(i=0;i<data.length;i++){ 
       str = str + ('<li><a href="' + data[i]['anchor'] +'" class="mylink"></li>'); 
        } 
      $(target).html(str); 
      $(".mylink").css("border","3px solid red"); 
      } 
     }); 
} 

我希望這有助於。

+0

@ under5hell你永遠不會看到源代碼中的JavaScript產生的任何東西。 JavaScript在加載源代碼後操作源代碼,因此要查看鏈接的代碼,您需要打開Developer Tools(F12)或Firefox的FireBug。這應該工作。 – Nathan 2012-01-16 05:20:46

+0

對不起,但它不工作。該鏈接是在沒有應用css的情況下生成的。我通過瀏覽器視圖 - >源菜單瀏覽了頁面源代碼,但鏈接不存在。這可能是怎麼回事?它出現在頁面上,但不在源代碼中: - ? – under5hell 2012-01-16 05:23:20

+1

哇,對不起..我的壞。我在最後一次嘗試時犯了一個錯誤。現在你的解決方案正在工作:-)謝謝 – under5hell 2012-01-16 05:31:10

1

在你的代碼運行時,該鏈接不存在的網頁上。

選擇$.ajax()調用的success回調中的元素。

+0

你搖滾!有用。謝謝你:-) – under5hell 2012-01-16 05:37:32

1

移動這一行到回調函數

$(".mylink").css("border","3px solid red"); //this is not works :-(

jQuery是發出Ajax請求,然後,沒有接收到響應了,即刻執行上面的行。那時,鏈接還沒有創建。

所以,你的AJAX調用應該像

function generate_link(method_url, target) 
{ 
    $.ajax({ 
     type: 'GET', 
     url: method_url, 
     dataType: 'json', 
     success: function(data) { 
     var str=''; 
     for(i=0;i<data.length;i++){ 
      str = str + ('<li><a href="' + data[i]['anchor'] +'" class="mylink"></li>'); 
       } 
     $(target).html(str); 
     $(".mylink").css("border","3px solid red"); //added this here 
     } 
    }); 

}

+1

它的工作原理。謝謝。 :-) – under5hell 2012-01-16 05:37:18