Tôi rất mới với jQuery và cố gắng chạy một hộp thoại jQueryUI khá đơn giản trong ứng dụng PHP của tôi. Trong bảng điều khiển firebug tôi nhận được lỗi:jQueryUI - ngoại lệ không bắt buộc: không thể gọi các phương thức
uncaught exception: cannot call methods on dialog prior to initialization; attempted to call method 'open'
Dưới đây là mã của tôi:
$(function() {
$("#dialog").dialog({
autoOpen: false,
show: "blind",
hide: "explode"
});
$("#opener").live('click',function() {
$("#dialog").dialog("open");
return false;
});
});
tôi đã làm một số googling về lỗi và không có nhiều bật lên, ngoại trừ jquery.ui.js
đó là tạo ra các lỗi với:
if (isMethodCall) {
this.each(function() {
var instance = $.data(this, name);
if (!instance) {
throw "cannot call methods on " + name + " prior to initialization; " +
"attempted to call method '" + options + "'";
}
...
Bất kỳ ý tưởng nào? Tôi đánh giá cao bất kỳ sự trợ giúp nào về thông báo lỗi này là gì và cách giải quyết nó.
CẬP NHẬT: Tôi đã cố gắng nhận xét các tùy chọn hiển thị/ẩn và điều đó không ảnh hưởng đến vấn đề của tôi. Dưới đây là HTML:
<div class="demo">
<div id="dialog" title="Basic dialog">
<p>This is an animated dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p>
</div>
<button id="opener">Open Dialog</button>
</div><!-- End demo -->
HTML này được bao gồm trong tệp PHP, được bao gồm trong tệp PHP khác.
Hình như jQuery-UI nghĩ rằng bạn đã không được khởi tạo hộp thoại trước khi gọi phương pháp mở của nó. Tôi muốn loại bỏ các tùy chọn hơi kỳ lạ cho hiển thị và ẩn mà bạn đã sử dụng, để thu hẹp nếu đó là vấn đề. Ngoài ra hãy chắc chắn rằng bạn có một phần tử với id 'dialog' trong đánh dấu của bạn. Nếu điều đó không hiệu quả, bạn sẽ phải cung cấp đánh dấu thực tế bạn đang sử dụng để chúng tôi có cơ hội gỡ lỗi. – Thomas
Xin chào Thomas, tôi đã xóa tùy chọn hiển thị/ẩn (không có hiệu lực) và dán HTML của tôi ở trên, cảm ơn – themerlinproject
Tôi nghĩ rằng nó có liên quan đến câu cuối cùng của tôi "HTML được bao gồm trong tệp PHP, được BAO GỒM trong một PHP khác tập tin".Tôi đã được thông qua các vấn đề với jQuery và PHP bao gồm và, kết quả là, tôi đã bắt đầu sử dụng live() để làm cho các chức năng có sẵn cho nội dung ajax'd trong tương lai (chẳng hạn như div này). Tôi không biết tại sao nó không hoạt động ở đây. – themerlinproject