2011-12-09 29 views
6

Tôi đang sử dụng tải jquery để lấy div trên một trang khác và chèn nó vào trang của tôi. mọi thứ như sau:tải jquery với javascript nội tuyến

$('#mydiv').load("/Pages/grid2.aspx" + " #otherpagediv"); 

Trong div trên trang khác, có javascript trong div. Javascript không phải là đi qua, chỉ có nội dung html. Có cách nào để có được tất cả mọi thứ trong div quy định?

+0

Bạn có thể cung cấp cho chúng với Javascript của DIV được nạp? Mã ban đầu? – Theodore

Trả lời

0

JavaScript cũng phải đi kèm theo phản hồi. Bạn phải đảm bảo rằng /Pages/grid2.aspx sẽ gửi phản hồi bắt buộc từ phía máy chủ. Ngoài ra, url mà bạn đã chuyển đến phương thức load có một khoảng trống trong đó. Tôi nghĩ bạn nên sửa nó và thử nó.

$('#mydiv').load("/Pages/grid2.aspx" + "#otherpagediv"); 
+0

điều này thực sự là do thiết kế của hàm 'tải'. Không gian được sử dụng để tải một phần của trang. –

+0

@Alexander - Tôi không biết điều này, tốt để biết cảm ơn. – ShankarSangoli

2

Từ documentation:

Lưu ý: Khi gọi .load() sử dụng một URL mà không có một biểu hiện selector hậu tố, nội dung được thông qua với .html() trước khi kịch bản được gỡ bỏ. Điều này thực hiện các khối tập lệnh trước khi chúng bị loại bỏ.

Nếu .load() được tuy nhiên gọi với một biểu thức selector nối vào URL , các kịch bản được tước ra trước khi DOM được cập nhật, đó là lý do họ không bao giờ được thực thi.

6

này hoạt động:

$.get('/Pages/grid2.aspx', function (data) { 
    $('#mydiv').html($('<div></div>').html(data).find('#otherpagediv').clone()); 
}); 

Live Demo:http://jsfiddle.net/FRbnD/4/show/light/

Để hiểu được bản demo, xem mã nguồn của cả hai trang mà bao gồm nó:
đang Nguồn demo: http://jsfiddle.net/FRbnD/4/
Mã nguồn của "trang khác": http://jsfiddle.net/MWkSj/1/

Ý tưởng là truy xuất trang khác qua yêu cầu $.get và sau đó tìm #otherpagedivsao chép nó. Sau đó bạn thêm bản sao vào #mydiv. Nếu bạn chèn một bản sao vào DOM và nếu bản sao đó chứa phần tử SCRIPT, thì tập lệnh đó sẽ được thực hiện.

+0

Điều này chắc chắn nên được thêm vào trang API jQuery! –

0

http://www.coursesweb.net/ajax/execute-javascript-code-ajax-response_t

Bạn có thể tìm thấy trang này hữu ích, tôi đã sử dụng kịch bản, nó sử dụng eval()

// this function create an Array that contains the JS code of every <script> 
// then apply the eval() to execute the code in every script collected 
function parseScript(strcode) { 
var scripts = new Array();   // Array which will store the script's code 

// Strip out tags 
while(strcode.indexOf("<script") > -1 || strcode.indexOf("</script") > -1) { 
var s = strcode.indexOf("<script"); 
var s_e = strcode.indexOf(">", s); 
var e = strcode.indexOf("</script", s); 
var e_e = strcode.indexOf(">", e); 

// Add to scripts array 
scripts.push(strcode.substring(s_e+1, e)); 
// Strip from strcode 
strcode = strcode.substring(0, s) + strcode.substring(e_e+1); 
} 

// Loop through every script collected and eval it 
for(var i=0; i<scripts.length; i++) { 
try { 
    eval(scripts[i]); 
} 
    catch(ex) { 
    // do what you want here when a script fails 
    } 
} 
} 
Các vấn đề liên quan