hộp thoại jQuery ui thay đổi tiêu đề sau khi tải-gọi lại


111

Tôi muốn thay đổi tiêu đề từ Hộp thoại giao diện người dùng sau khi tôi đã gửi biểu mẫu trong Hộp thoại giao diện người dùng này. Vì vậy, trong hàm gọi lại sau khi loadtôi nên đề xuất, nhưng tôi đã thử và truy cập vào Google mà không có kết quả.

Có ai có một ý tưởng?

Câu trả lời:


258

Sử dụng các phương pháp hộp thoại:

$('.selectorUsedToCreateTheDialog').dialog('option', 'title', 'My New title');

Hoặc trực tiếp, hacky mặc dù:

$("span.ui-dialog-title").text('My New Title'); 

Để tham khảo trong tương lai, bạn có thể bỏ qua google với jQuery. API jQuery sẽ trả lời câu hỏi của bạn hầu hết thời gian. Trong trường hợp này, trang API hộp thoại . Đối với thư viện chính: http://api.jquery.com


8
Lưu ý rằng phiên bản "hacky" ở trên sẽ thay đổi tiêu đề của TẤT CẢ hộp thoại trên trang (trong trường hợp bạn đã tạo nhiều hộp thoại).
camainc

1
tôi có thể vượt qua nhiều lựa chọn không?
themhz

3
@themis trong phiên bản hiện tại có một .option()phương thức cũng lấy một đối tượng, xem options(options)tại đây: api.jqueryui.com/dialog/#method-option
Nick Craver

Hộp thoại $ ("# hộp thoại"). ({autoOpen: false, show: {effect: "blind", thời lượng: 1000}, hide: {effect: "bùng nổ", thời lượng: 1000}, close: function () {; }, title: "test"}). hộp thoại ("open");
WhiteWolfza

Vì câu trả lời của tôi vẫn đang nhận được rất nhiều sự chú ý, tôi cũng sẽ đăng nó ở đây .. stackoverflow.com/a/17745795/1315125
Igor L.

14

Tôi đã tìm thấy giải pháp đơn giản hơn:

$('#clickToCreate').live('click', function() {
     $('#yourDialogId')
         .dialog({
              title: "Set the title to Create"
         })
         .dialog('open'); 
});


$('#clickToEdit').live('click', function() {
     $('#yourDialogId')
         .dialog({
              title: "Set the title To Edit"
         })
         .dialog('open'); 
});

Hy vọng rằng sẽ giúp!


3

Một cải tiến của ý tưởng hacky của Nick Craver để đặt HTML tùy chỉnh trong tiêu đề hộp thoại jquery:

var newtitle= '<b>HTML TITLE</b>';
$(".selectorUsedToCreateTheDialog").parent().find("span.ui-dialog-title").html(newtitle);

Tôi không muốn bị hack khi không cần phải làm như vậy, và đã có một cách được jquery xác nhận để đặt tiêu đề HTML: ghi đè phương thức _title. Nó đã được đề cập trong câu trả lời SO này: stackoverflow.com/questions/14488774/...
cincodenada

2

Tôi đã cố gắng triển khai kết quả của Nick là:

$('.selectorUsedToCreateTheDialog').dialog('option', 'title', 'My New title');

Nhưng điều đó không hiệu quả với tôi vì tôi có nhiều hộp thoại trên 1 trang. Trong tình huống như vậy, nó sẽ chỉ đặt tiêu đề chính xác trong lần đầu tiên. Cố gắng ghim các lệnh không hoạt động:

    $("#modal_popup").html(data);
    $("#modal_popup").dialog('option', 'title', 'My New Title');
    $("#modal_popup").dialog({ width: 950, height: 550);

Tôi đã sửa lỗi này bằng cách thêm tiêu đề vào đối số hàm javascript của mỗi hộp thoại trên trang:

function show_popup1() {
    $("#modal_popup").html(data);
    $("#modal_popup").dialog({ width: 950, height: 550, title: 'Popup Title of my First Dialog'});
}

function show_popup2() {
    $("#modal_popup").html(data);
    $("#modal_popup").dialog({ width: 950, height: 550, title: 'Popup Title of my Other Dialog'});
}

0

Thậm chí còn tốt hơn!

    jQuery( "#dialog" ).attr('title', 'Error');
    jQuery( "#dialog" ).text('You forgot to enter your first name');

Dòng đầu tiên sẽ không thay đổi tiêu đề hộp thoại. Không có thuộc tính như vậy trong hộp thoại giao diện người dùng jQuery. Cái thứ hai sẽ tự thay đổi nội dung của hộp thoại, nhưng đó không phải là những gì người dùng yêu cầu. Và đó là giả sử idhộp thoại của yoru #dialog.
Pere
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.