2011-10-26 32 views
9

Ai đó có thể cho tôi biết cách tôi có thể sửa đổi html trước khi tôi chèn nó vào tài liệu?jQuery - sửa đổi chuỗi HTML

Đây là một cuộc gọi AJAX:

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

Đây là kết quả của cuộc gọi AJAX:

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

Tất cả tôi muốn làm là thay đổi màu sắc của thẻ h1. Tôi đã thêm mã này

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

Tuy nhiên điều này không có hiệu lực. Bộ chọn jQuery dường như không hoạt động.

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); 

Sử dụng console.log kết quả đầu ra chính xác 1. Vì vậy, tìm h1. Đối với một số lý do mặc dù phong cách css không được áp dụng.

Tôi hơi bị kẹt. Tôi có bỏ lỡ một bước không?

+0

Bạn đang cố thay đổi màu văn bản hoặc màu nền? –

+0

Bạn có thể tạo bản trình diễn http://jsfiddle.net về vấn đề này không? – Petr

+0

Mã của bạn nên hoạt động, bạn có chắc chắn trang của mình không chứa bất kỳ quy tắc nào để ẩn các thành phần bạn đang thêm không? –

Trả lời

17

Dường như bạn đang thay đổi màu sắc và sau đó thêm các chuỗi không thay đổi vào DOM. Hãy thử điều này:

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

câu trả lời tuyệt vời :) nó có thể được đơn giản hóa như sau: $ html.find ('h1'). Css ('color', 'red'). End(). InsertAfter ('aside') – Kato

+0

Lưu ý: Nếu bạn muốn phần tử gốc từ chuỗi, bạn không thể sử dụng 'find' trên nó, vì biến * là * phần tử gốc. –

0

Hãy thử thêm !important với phong cách css:

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

Bạn không thể sử dụng! Quan trọng trong cuộc gọi .css. –

2

Hãy thử điều này:

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

+0

điều này sẽ chỉ chèn h1 và không phải toàn bộ phần tử html – Kato

+0

Bạn hoàn toàn đúng - được chỉnh sửa. –

3

Câu trả lời được chấp nhận ở đây thực sự lãng phí khá nhiều thời gian của tôi. Ít nhất nó không phải là chung chung. Đây là những gì đã tìm ra sau một thời gian.

$.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()); 
    } 
}); 
Các vấn đề liên quan