2012-02-16 27 views
7

Tôi đang sử dụng thiết bị di động jquery để tạo trang web nhưng khi tôi nhấp vào nút và nút này trỏ đến trang hộp thoại, trong URL xuất hiện #&ui-state=dialog. Nếu tôi đặt trong các <a data-ajax="false"></a> url là chính xác mà không có #&ui-state=dialog nhưng cửa sổ hộp thoại không hiển thị chính xác bởi vì rõ ràng là ajax là vô hiệu hóa. Có một số cách để sửa chữa nó?sửa url bằng cách sử dụng jquery mobile

Trả lời

1

Khi bạn mở hộp thoại, sử dụng $.mobile.changePage() và thiết lập các tùy chọn changeHash-false: http://jquerymobile.com/demos/1.0.1/docs/api/methods.html

//delegate the event binding so elements in the DOM now and in the future will be bound-to 
$(document).delegate('#my-dialog-button', 'click', function() { 

    //change to the dialog, forcing the hash to remain the same and the page to be viewed as a dialog 
    $.mobile.changePage($('#my-dialog'), { 
     changeHash : false, 
     role  : 'dialog' 
    }); 
}); 
+0

tốt các công trình chức năng nhưng theo cách này trang web được cho thấy chỉ như là một trang và không nữa như một hộp thoại như thế nào nếu ajax là tàn tật –

+0

Đây là một bản demo: http://jsfiddle.net/qzzW5/. Trang mở ra dưới dạng hộp thoại trong mọi trình duyệt tôi đã kiểm tra. – Jasper

+0

Tôi đã thử ví dụ của mình trong jsfiddle và hoạt động chính xác. Nhưng trong trang của tôi không hoạt động. Có thể vì tôi đã sử dụng trong một trang trước đây để đăng biểu mẫu dữ liệu-ajax = "false"? –

1

Không biết tại sao, nhưng Jasper dụ không hoạt động khi tôi cố gắng tích hợp nó quá.

Tôi đã sử dụng thuộc tính data-* trên nút để định cấu hình hộp thoại.

Bây giờ tôi khai báo tất cả các tùy chọn trong hàm changePage và hoạt động tốt.

<a href="#" data-role="button" id="#my-dialog-button"></a> 

$("#my-dialog-button").click(function() { 
    $.mobile.changePage("page_containing_the_dialog.html", { 
     type: "get", 
     transition: 'pop', 
     role: 'dialog', 
     changeHash : false 
    }); 
}); 
17

Cố gắng sử dụng dữ liệu lịch sử = "false" trong thẻ div cửa sổ bật lên như:

<div data-history="false" data-role="popup" id="options-list-div" data-theme="b" data-overlay-theme="b"> 

Chúc may mắn! :-)

+0

sửa chữa nó cho tôi :) Cảm ơn – Roshdy

+0

Bạn chào mừng, vui lòng trợ giúp :-) –

+0

Đối với tôi nó không hoạt động .. Nếu tôi thêm dữ liệu lịch sử = "false" nó không thêm hộp thoại # & ui-state = nhưng nó vẫn đi trở lại trang đầu tiên và nó không chuyển sang trang tiếp theo chính xác như trước (sau một thời gian nó sẽ chuyển sang trang mới).Và nếu tôi thêm "changeHash" bên trong hàm changePage, sẽ không có gì xảy ra .. – ayasha

0

Sử dụng changeHash sẽ tắt thay đổi lịch sử vì url sẽ không thay đổi. Vì vậy, nếu người dùng nhấp/nhấn vào nút đóng, nó sẽ chuyển sang trang trước nếu có bất kỳ trang nào. Ngoài ra, nó có thể gây ra sự cố khi người dùng chạm vào nút quay lại trên thiết bị di động vì không có thay đổi lịch sử khi cửa sổ bật lên được mở, nó sẽ đưa người dùng trở lại trang trước thay vì đóng cửa sổ bật lên , đó sẽ là hành vi không chính xác.

Thay vì changeHash nếu chúng tôi sử dụng transition, nó sẽ hoạt động giống như hộp thoại và để cho băm thay đổi lịch sử.

@Vincentp bạn đã thử xóa thuộc tính changeHash khỏi cuộc gọi 'changePage', bây giờ bạn đang sử dụng transition?

$("#my-dialog-button").click(function() { 
    var default_transition = "pop"; 
    $.mobile.changePage("page_containing_the_dialog.html", { 
     role : 'dialog', 
     transition: $(this).data('transition') || default_transition 
    }); 
    return false; 
}); 
Các vấn đề liên quan