2011-10-26 25 views
9

Birisi belgeye yerleştirmeden önce html'yi nasıl değiştirebileceğimi söyleyebilir mi?jQuery - HTML dizesini değiştir

Bu AJAX çağrıdır:

url: "http://localhost/cart/public/admin/album", 
success: function(html) { 

Bu AJAX çağrısı sonucudur:

<div class="main-content slide-in"> 
    <h1>Create Album</h1> 
    <div class="inner"> 
    </div> 
</div> 

yapmak istediğim tüm h1 etiketin rengini değiştirmektir. Bu kodun hiçbir etkisi yoktur. JQuery seçici olsa çalışıyor gibi görünüyor. Bu yüzden h1 bulmaktır console.log doğru çıkışlar 1. Kullanılması

url: "http://localhost/cart/public/admin/album", 
success: function(html) { 
    $(html).find('h1').css('color','red'); 
    console.log($(html).find('h1').length); 
    $('aside').after(html); 

. Bazı sebeplerden dolayı css stili uygulanmıyor.

Takılı kaldım. Bir adımı kaçırıyor muyum? css stiline !important ekleyerek

+0

Metin rengini mi yoksa arkaplan rengini mi değiştirmeye çalışıyorsunuz? –

+0

Bu sorunun http://jsfiddle.net demosunu yapabilir misiniz? – Petr

+0

Kodunuz çalışmalı, sayfanızın eklediğiniz öğeleri gizlemek için herhangi bir kural içermediğinden emin misiniz? –

cevap

17

görünüyor. Deneyin:

success: function(html) { 
    var $html = $(html); 
    $html.find('h1').css('color','red'); 
    $('aside').after($html); 
+0

büyük cevap :) aşağıdaki gibi basitleştirilebilir: $ html.find ('h1'). Css ('renk', 'kırmızı'). End(). InsertAfter ('kenara') – Kato

+0

Not: Eğer isterseniz dizgeden kök eleman, üzerinde 'find' kullanamazsınız, çünkü değişken * * root öğesidir. –

0

Dene:

$(html).find('h1').css("color", "red !important"); 
+1

Kullanamazsınız, bir .css çağrısında önemli. –

2

bu deneyin: Eğer rengini değiştirerek ve sonra DOM değişmeden dize ekliyoruz gibi

$(html).find('h1').css('color', 'red').parent().insertAfter('aside');

+0

bu sadece h1'i ekleyecektir ve tüm html öğesini değil, – Kato

+0

kesinlikle doğru - düzenlenmiştir. –

3

Burada kabul edilen cevap aslında çok fazla zaman harcadı. En azından jenerik değil. Bir aradan sonra çözülen budur.

$.ajax({ 
    url: "http://localhost/~yoelusa/the-url-of-your-string.html", 
    success: function(htmldata) { 
    var $html = $("<div/>").append(htmldata); 
    // make your changes on the html string, see some example bellow relevant to my htmlstring 
    $html.find('#left').html(""); 
    $html.find('#right').html(""); 
    $html.find('.commentlist').remove(); 
    // when you are ready to insert your string somewhere call the html() function, in my example I inserted it in an iframe 
    $("iframe").attr("srcdoc", $html.html()); 
    } 
});