2011-09-28 34 views
6

Làm cách nào để bạn viết HTML ra vị trí gọi của một hàm jQuery?Viết HTML mới cho vị trí gọi

Tôi có một trang HTML có chứa mã jQuery/JS sau:

... HTML contents ... 
<script> 
    functionName(); 
</script> 
... More HTML Contents... 

Làm thế nào để tôi nhận được functionName để bổ sung/viết ra nội dung mới, nơi nó được gọi là, chứ không phải là lựa chọn ID khác trong tài liệu và phụ thêm sau đó.

JavaScript document.write của JavaScript có thể thực hiện điều này, tuy nhiên, tôi đã đọc rằng nó hỗ trợ khả năng của jQuery để làm việc với DOM sau này.

Trả lời

2

Lấy cảm hứng từ this answer.

Có vẻ như các tập lệnh được chạy theo thứ tự, vì vậy tại thời điểm gọi, thẻ tập lệnh cuối cùng tại thời điểm đó là thẻ tập lệnh chứa cuộc gọi đó.

http://jsfiddle.net/vYPHb/2/

function test() { 
    // get last script tag at the point of calling - useful case of 
    // explicitly NOT using '$(document).ready' :) 

    $("script:last").replaceWith("hacked"); 
} 

HTML:

foo 

<script> 
    test(); 
</script> 

bar 
+0

Wow .. thats a khá ummm .. [IMG] Có vẻ hợp lý mặc dù] – monksy

+0

@monksy: Đó là một chút phức tạp, tôi đã cố gắng để làm cho nó ngắn gọn hơn – pimvdb

+0

Cảm ơn Điều đó trông hơi sạch hơn – monksy

1

Nó phụ thuộc như thế nào document.write đang được sử dụng. Nếu nó đang được sử dụng trước khi trang tải xong, thì nó là tốt, nhưng nó sẽ được sử dụng sau (được kích hoạt từ sự kiện tải trang), sau đó nó sẽ đặt tài liệu ở trạng thái ngoại lệ (write) mở và bắt đầu viết, mà kết quả trong một trang trống (trong IE), hoặc một tài liệu mở mà không bao giờ kết thúc [document.close được gọi một cách rõ ràng bởi trình duyệt sau khi trang đã tải xong]

+0

Chức năng cụ thể là xử lý một hành động onclick trên nội dung được viết . – monksy

Các vấn đề liên quan