2009-07-15 33 views
7

Làm cách nào để xóa các nút trong hộp thoại jquery? Ví dụ, tôi đã thử gọi lại .dialog với các tùy chọn mới chính xác, nhưng hộp thoại có vẻ không bị ảnh hưởng.Hộp thoại giao diện người dùng jQuery - không thể xóa các nút

$ ('. Selector'). Dialog ('option', 'buttons', {}); không hoạt động, và cũng không hoạt động nếu các chuỗi và các hàm nút thực tế mới được khai báo.

Suy nghĩ?

+1

Bạn có thể đăng thêm mã mẫu không? – juan

+0

http://jqueryui.com/demos/dialog/#option-buttons –

+0

Khi nó quay ra, điều này không hoạt động, nhưng nó sẽ âm thầm thất bại nếu cú ​​pháp của bạn là hộp thoại ({'option', ...}); –

Trả lời

2

Không thể thêm/đặt các nút trong khi hộp thoại đang tải.

0

Bạn cần destroy mục hiện tại trước tiên. Sau đó, bạn có thể tạo một cái mới với các tùy chọn mới mà bạn muốn.

EDIT (để trả lời nhận xét): Tôi không biết phải nói gì với bạn. Tôi đã làm như sau trên trang web của tôi và WFM.

$('.selector').dialog('destroy'); 
$('.selector').dialog({ buttons: { "Ok": function() { $(this).dialog("close"); } } }); 
$('.selector').dialog('open'); 

Bạn cần quay lại trạng thái trước khi bắt đầu để thay đổi các nút, đó là những gì destroy thực hiện. Có lẽ tôi không đủ rõ ràng về các bước.

+0

Phá hủy da. Tất nhiên tôi có thể phá hủy hộp thoại và xây dựng lại nó, nhưng tài liệu jquery ui dường như nghĩ rằng bạn có thể xây dựng các nút sau khi tạo. –

+0

chỉnh sửa để trả lời nhận xét của bạn. bạn cần quay trở lại trạng thái trước khi bắt đầu trước khi bạn có thể thay đổi các nút. – geowa4

13

Bạn đang chuyển các nút mới được đặt sai hướng. Các tùy chọn nên được chuyển như một đối tượng.

này sẽ làm việc:

var options = { 
    buttons: {} 
}; 
$(selector).dialog('option', options); 

Không cần phải phá hủy và tạo ra hộp thoại mới.

Tất nhiên bạn cũng có thể thay thế các nút đối tượng với một bộ mới của nút nếu bạn muốn:

var options = { 
    buttons: { 
     NewButton: function() { 
      $(this).dialog('close'); 
      // add code here 
     } 
    } 
}; 
$(selector).dialog('option', options); 
0

Một cách khác, có lẽ cách đơn giản và linh hoạt nhất để thực hiện việc này là thông qua CSS. (nếu bạn cuối cùng sẽ cần chúng trong tương lai ...).

Hình như:

.ui-dialog-titlebar-close{display:none} 

Nếu bạn muốn làm điều đó chỉ cho một số hộp thoại, bạn có thể thêm dialogClass: tùy chọn khi khởi tạo hộp thoại, và css của bạn sẽ trông giống như (ví dụ bạn đã thêm myDialogClass như dialogClass , vì vậy toàn bộ thùng chứa thoại sẽ có thể truy cập thông qua lớp này:

.myDialog .ui-dialog-titlebar-close{display:none} 

Chúc may mắn trong tùy

4

FWIW,

$(".dialog").dialog("option", "buttons", null); 
Các vấn đề liên quan