2012-04-25 29 views
7

Sử dụng jQuery Mobile Tôi muốn tắt cuộc gọi ajax trên các liên kết trong một phần cụ thể của DOM.Xóa cuộc gọi ajax khỏi liên kết thông thường bằng jQuery Mobile

Tôi không muốn đặt một

data-ajax = false 

mỗi khi tôi không muốn sử dụng ajax jquerymobile.

Ví dụ, bất cứ liên kết đó là một đứa trẻ của 'nội dung':

<div class="content"> 
    <a href="http://externalwebsite.com">External Link</a> 
</div> 

Tôi muốn thêm 'dữ liệu ajax = false' vào mỗi liên kết đó là một đứa trẻ của 'nội dung'

Có cách nào để làm điều này với jquery?

Trả lời

18

Nếu bạn muốn vô hiệu hóa hành vi liên kết ajax từ một thẻ neo, bạn có thể đặt rel=external trong liên kết và liên kết sẽ được tải mà không ajax và sau đó url của bạn sẽ được bình thường.

http://jquerymobile.com/demos/1.0a4.1/#docs/pages/docs-navmodel.html

<a href="User/somepage" rel="external" />I wont be using ajax for navigation</a> 

Nếu bạn muốn làm điều này trong jQuery cho một số một thẻ bên trong nội dung div, bạn có thể thử như thế này

$(function(){ 
    $(".content a").each(function(){ 
    $(this).attr("rel","external"); 
    }); 
}); 

Đây là một mẫu http://jsfiddle.net/4WEBk/3/

Các phiên bản đơn giản hơn. (Cảm ơn tandu để chỉ)

$(function(){ 
    $(".content a").attr("rel","external"); 
}); 
+0

Đây là giải pháp thay thế chậm hơn. Cuộc gọi đến '.each' là không cần thiết vì phiên bản setter của' .attr' hoạt động trên một bộ sưu tập. Bạn cũng có thể gọi '$ (". Content a "). Each()' để tránh thêm vào bảng biểu tượng. –

+0

Không thêm 'rel =" external "' có thể xấu như việc thêm 'data-ajax = false'? Câu trả lời hay, nhưng tôi nghĩ nó tạo ra các yêu cầu tương tự mà OP không muốn. –

+0

@JoshAllen OP đã yêu cầu một cách dễ dàng để tự động thêm thuộc tính vào một bộ chọn cụ thể .. nếu anh ta muốn rời khỏi thuộc tính * off *, anh ta có thể giải quyết điều đó bằng cách không làm gì cả. –

5
$(".content a").attr('data-ajax', false); 
0

Tôi cũng phải thêm rel = "external" và target = "_ self" để làm cho nó hoạt động.

Trong điều kiện nhất định, yêu cầu http bình thường sẽ được sử dụng thay vì yêu cầu Ajax. Một trường hợp điều này đúng là khi liên kết tới các trang trên các trang web bên ngoài. Bạn cũng có thể xác định rằng một yêu cầu http bình thường được thực hiện thông qua các liên kết thuộc tính sau đây:

  • rel = bên ngoài

  • mục tiêu (với bất kỳ giá trị, chẳng hạn như "_blank")

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