Cách tạo trang html động bằng jquery

', {class: '' }); row.append($('
Chế độ xem của tôi có một

nơi tạo nội dung HTML. Sau khi chạy dự án nhỏ của mình, tôi nhấp chuột phải vào trang được hiển thị và chọn "Xem nguồn trang" trong đó

được hiển thị nhưng không có bất cứ thứ gì bên trong nó như hình bên dưới. Tuy nhiên, trang được hiển thị chính xác vì văn bản của $item1 và hình ảnh trong $item2 được hiển thị

Trong bài viết này, chúng ta sẽ biết Cách tạo một trang HTML động bằng HTML, CSS và JavaScript. Trước tiên hãy cho chúng tôi biết trang HTML động thực sự là gì

Trang HTML động, như tên gợi ý đề cập đến một trang HTML động theo cách có thể tùy chỉnh và thay đổi theo đầu vào của người dùng. Ví dụ. -

  • Sử dụng CSS, chúng ta có thể thay đổi màu nền của trang web mỗi khi người dùng nhấp vào nút trên trang web
  • Sử dụng JavaScript, chúng tôi có thể yêu cầu người dùng nhập tên của họ và sau đó hiển thị động trên trang web

Nếu bạn muốn tìm hiểu thêm về các trang HTML động, bạn có thể xem bài viết này  DHTML JavaScript

Vì vậy, đây là một cách thanh lịch hơn để viết cùng một mã, trong đó mỗi thẻ HTML được thêm riêng vào phần tử cha của nó. Để làm cho nó đơn giản, hãy bắt đầu với nút thấp nhất và di chuyển lên trên để xây dựng cha mẹ của nó theo cách đệ quy

Hãy xem xét một danh sách các đối tượng, chẳng hạn như "Sản phẩm", cần được điền vào bảng của chúng ta một cách nhanh chóng. Mỗi đối tượng Sản phẩm ánh xạ tới một hàng trong bảng HTML

for(var i = 0; i < products.length; i++){                
    var row =  $('
').append(products[i].Id)); row.append($('').append(products[i].Name)); .... row.append($('').append(products[i].Status)); table.find('tbody').append(row); }

Trên đây chỉ là một ví dụ đơn giản. Có thể có nhiều thẻ HTML phức tạp hơn có thể được thêm vào theo cách tương tự

jQuery Mobile cho phép các trang được kéo vào DOM một cách linh hoạt thông qua hành vi chiếm quyền điều khiển nhấp chuột mặc định của nó hoặc thông qua các lệnh gọi thủ công tới


  	

Select a Category Below:

4. Điều này rất tốt cho các ứng dụng tạo các trang/đoạn HTML ở phía máy chủ, nhưng đôi khi có những trường hợp ứng dụng cần tự động tạo nội dung trang ở phía máy khách từ JSON hoặc một số định dạng khác. Điều này có thể cần thiết vì lý do băng thông/hiệu suất hoặc vì đó là định dạng dữ liệu được lựa chọn cho máy chủ mà chúng đang tương tác

Đối với các ứng dụng cần tạo đánh dấu trang ở phía máy khách, điều quan trọng là phải biết về các thông báo được kích hoạt trong cuộc gọi


  	

Select a Category Below:

4 vì chúng có thể được sử dụng làm móc nối vào hệ thống điều hướng cho phép bạn tạo nội dung của mình ở thời điểm thích hợp.

Một cuộc gọi đến


  	

Select a Category Below:

6 thường sẽ kích hoạt các thông báo sự kiện sau

  • 
      	

    Select a Category Below:

    7
    • Đã tắt trước khi tải hoặc chuyển đổi bất kỳ trang nào
    • GHI CHÚ. Sự kiện này trước đây được gọi là "trang trao đổi trước"
  • 
      	

    Select a Category Below:

    8
    • Bị tắt sau khi tải và chuyển đổi tất cả các trang
    • GHI CHÚ. sự kiện này trước đây được gọi là "trang thay đổi"
  • 
      	

    Select a Category Below:

    0
    • Bị tắt nếu xảy ra lỗi trong khi cố gắng tải động một trang mới

Các thông báo này được kích hoạt trên phần tử vùng chứa chính (


  	

Select a Category Below:

1) của các trang và sẽ tạo bong bóng cho đến phần tử tài liệu và cửa sổ

Đối với các ứng dụng muốn thêm trang hoặc sửa đổi triệt để nội dung của trang hiện có, dựa trên một số dữ liệu không phải HTML, chẳng hạn như JSON hoặc đối tượng JS trong bộ nhớ, sự kiện


  	

Select a Category Below:

7 rất hữu ích vì nó cung cấp cho bạn một cơ hội để phân tích

Để minh họa kỹ thuật này, hãy xem mẫu làm việc này. Trong mẫu này, trang chính bắt đầu với một danh sách các danh mục mà người dùng có thể điều hướng vào. Các mục thực tế trong mỗi danh mục được lưu trữ trong một đối tượng JavaScript trong bộ nhớ, nhằm mục đích minh họa, nhưng dữ liệu thực sự có thể đến từ bất kỳ đâu


var categoryData = {
	animals: {
		name: "Animals",
		description: "All your favorites from aardvarks to zebras.",
		items: [
			{
				name: "Pets"
			},
			{
				name: "Farm Animals"
			},
			{
				name: "Wild Animals"
			}
		]
	},
	colors: {
		name: "Colors",
		description: "Fresh colors from the magic rainbow.",
		items: [
			{
				name: "Blue"
			},
			{
				name: "Green"
			},
			{
				name: "Orange"
			},
			{
				name: "Purple"
			},
			{
				name: "Red"
			},
			{
				name: "Yellow"
			},
			{
				name: "Violet"
			}
		]
	},
	vehicles: {
		name: "Vehicles",
		description: "Everything from cars to planes.",
		items: [
			{
				name: "Cars"
			},
			{
				name: "Planes"
			},
			{
				name: "Construction"
			}
		]
	}
};

Ứng dụng sử dụng các liên kết có url chứa hàm băm cho ứng dụng biết mục danh mục nào sẽ hiển thị


  	

Select a Category Below:

Trong nội bộ, khi người dùng nhấp vào một trong các liên kết này, ứng dụng sẽ chặn cuộc gọi


  	

Select a Category Below:

4 nội bộ được gọi bởi hành vi chiếm quyền điều khiển liên kết mặc định của khung. Sau đó, nó phân tích URL cho trang sắp được tải, rồi quyết định xem nó có nên tự xử lý việc tải hay để mã

  	

Select a Category Below:

6 bình thường xử lý mọi việc

Ứng dụng có thể tự chèn vào luồng


  	

Select a Category Below:

6 bằng cách liên kết với sự kiện

  	

Select a Category Below:

7 ở cấp độ tài liệu


// Listen for any attempts to call changePage().
$(document).bind( "pagebeforechange", function( e, data ) {

	// We only want to handle changePage() calls where the caller is
	// asking us to load a page by URL.
	if ( typeof data.toPage === "string" ) {

		// We are being asked to load a page by URL, but we only
		// want to handle URLs that request the data for a specific
		// category.
		var u = $.mobile.path.parseUrl( data.toPage ),
			re = /^#category-item/;

		if ( u.hash.search(re) !== -1 ) {

			// We're being asked to display the items for a specific category.
			// Call our internal method that builds the content for the category
			// on the fly based on our in-memory category data structure.
			showCategory( u, data.options );

			// Make sure to tell changePage() we've handled this call so it doesn't
			// have to do anything.
			e.preventDefault();
		}
	}
});

Vậy tại sao phải nghe ở cấp độ tài liệu? . Chúng tôi cần liên kết của mình hoạt động trước khi khung jQuery Mobile khởi chạy và quyết định cách xử lý URL ban đầu đã gọi ứng dụng

Khi lệnh gọi lại cho liên kết


  	

Select a Category Below:

7 được gọi, đối số thứ 2 của lệnh gọi lại sẽ là một đối tượng dữ liệu chứa các đối số được truyền cho lệnh gọi

  	

Select a Category Below:

4 ban đầu. Các thuộc tính của đối tượng này như sau

  • 
    // Listen for any attempts to call changePage().
    $(document).bind( "pagebeforechange", function( e, data ) {
    
    	// We only want to handle changePage() calls where the caller is
    	// asking us to load a page by URL.
    	if ( typeof data.toPage === "string" ) {
    
    		// We are being asked to load a page by URL, but we only
    		// want to handle URLs that request the data for a specific
    		// category.
    		var u = $.mobile.path.parseUrl( data.toPage ),
    			re = /^#category-item/;
    
    		if ( u.hash.search(re) !== -1 ) {
    
    			// We're being asked to display the items for a specific category.
    			// Call our internal method that builds the content for the category
    			// on the fly based on our in-memory category data structure.
    			showCategory( u, data.options );
    
    			// Make sure to tell changePage() we've handled this call so it doesn't
    			// have to do anything.
    			e.preventDefault();
    		}
    	}
    });
    
    
    2
    • Có thể là đối tượng bộ sưu tập jQuery chứa trang sẽ được chuyển sang HOẶC tham chiếu URL cho trang sẽ được tải/chuyển sang
  • 
    // Listen for any attempts to call changePage().
    $(document).bind( "pagebeforechange", function( e, data ) {
    
    	// We only want to handle changePage() calls where the caller is
    	// asking us to load a page by URL.
    	if ( typeof data.toPage === "string" ) {
    
    		// We are being asked to load a page by URL, but we only
    		// want to handle URLs that request the data for a specific
    		// category.
    		var u = $.mobile.path.parseUrl( data.toPage ),
    			re = /^#category-item/;
    
    		if ( u.hash.search(re) !== -1 ) {
    
    			// We're being asked to display the items for a specific category.
    			// Call our internal method that builds the content for the category
    			// on the fly based on our in-memory category data structure.
    			showCategory( u, data.options );
    
    			// Make sure to tell changePage() we've handled this call so it doesn't
    			// have to do anything.
    			e.preventDefault();
    		}
    	}
    });
    
    
    3
    • Đối tượng chứa các tùy chọn được chuyển bởi người gọi hàm
      
        	

      Select a Category Below:

      4
    • Một danh sách các tùy chọn có thể được tìm thấy ở đây

Đối với ứng dụng mẫu của chúng tôi, chúng tôi chỉ quan tâm đến các cuộc gọi


  	

Select a Category Below:

6 trong đó URL ban đầu được chuyển vào, vì vậy điều đầu tiên cuộc gọi lại của chúng tôi là kiểm tra loại cho

// Listen for any attempts to call changePage().
$(document).bind( "pagebeforechange", function( e, data ) {

	// We only want to handle changePage() calls where the caller is
	// asking us to load a page by URL.
	if ( typeof data.toPage === "string" ) {

		// We are being asked to load a page by URL, but we only
		// want to handle URLs that request the data for a specific
		// category.
		var u = $.mobile.path.parseUrl( data.toPage ),
			re = /^#category-item/;

		if ( u.hash.search(re) !== -1 ) {

			// We're being asked to display the items for a specific category.
			// Call our internal method that builds the content for the category
			// on the fly based on our in-memory category data structure.
			showCategory( u, data.options );

			// Make sure to tell changePage() we've handled this call so it doesn't
			// have to do anything.
			e.preventDefault();
		}
	}
});

2. Tiếp theo, với sự trợ giúp của một số tiện ích phân tích cú pháp URL, nó sẽ kiểm tra để đảm bảo liệu URL có chứa hàm băm mà chúng tôi muốn tự xử lý hay không. Nếu vậy, nó sẽ gọi một hàm ứng dụng có tên là

// Listen for any attempts to call changePage().
$(document).bind( "pagebeforechange", function( e, data ) {

	// We only want to handle changePage() calls where the caller is
	// asking us to load a page by URL.
	if ( typeof data.toPage === "string" ) {

		// We are being asked to load a page by URL, but we only
		// want to handle URLs that request the data for a specific
		// category.
		var u = $.mobile.path.parseUrl( data.toPage ),
			re = /^#category-item/;

		if ( u.hash.search(re) !== -1 ) {

			// We're being asked to display the items for a specific category.
			// Call our internal method that builds the content for the category
			// on the fly based on our in-memory category data structure.
			showCategory( u, data.options );

			// Make sure to tell changePage() we've handled this call so it doesn't
			// have to do anything.
			e.preventDefault();
		}
	}
});

7, chức năng này sẽ tự động tạo nội dung cho danh mục được chỉ định bởi hàm băm URL, sau đó nó gọi

  	

Select a Category Below:

4 trong sự kiện

Gọi


  	

Select a Category Below:

4 trong sự kiện

  	

Select a Category Below:

7 khiến lệnh gọi

  	

Select a Category Below:

4 ban đầu bị thoát mà không thực hiện bất kỳ công việc nào. Gọi phương thức

  	

Select a Category Below:

4 trong sự kiện tương đương với việc nói với jQuery Mobile rằng bạn đã tự mình xử lý yêu cầu

  	

Select a Category Below:

6

Nếu


  	

Select a Category Below:

4 không được gọi,

  	

Select a Category Below:

6 sẽ tiếp tục xử lý như bình thường. Một điều cần chỉ ra về đối tượng dữ liệu được chuyển vào cuộc gọi lại của chúng tôi, đó là bất kỳ thay đổi nào bạn thực hiện đối với thuộc tính

// Listen for any attempts to call changePage().
$(document).bind( "pagebeforechange", function( e, data ) {

	// We only want to handle changePage() calls where the caller is
	// asking us to load a page by URL.
	if ( typeof data.toPage === "string" ) {

		// We are being asked to load a page by URL, but we only
		// want to handle URLs that request the data for a specific
		// category.
		var u = $.mobile.path.parseUrl( data.toPage ),
			re = /^#category-item/;

		if ( u.hash.search(re) !== -1 ) {

			// We're being asked to display the items for a specific category.
			// Call our internal method that builds the content for the category
			// on the fly based on our in-memory category data structure.
			showCategory( u, data.options );

			// Make sure to tell changePage() we've handled this call so it doesn't
			// have to do anything.
			e.preventDefault();
		}
	}
});

2 hoặc thuộc tính tùy chọn, sẽ ảnh hưởng đến quá trình xử lý

  	

Select a Category Below:

6 nếu

  	

Select a Category Below:

4 không được gọi. Vì vậy, ví dụ: nếu chúng tôi muốn chuyển hướng hoặc ánh xạ một URL cụ thể tới một trang bên trong/bên ngoài khác, lệnh gọi lại của chúng tôi có thể chỉ cần đặt thuộc tính

  	

Select a Category Below:

79 trong lệnh gọi lại thành phần tử URL hoặc DOM của trang để chuyển hướng đến. Tương tự như vậy, chúng tôi có thể đặt hoặc bỏ đặt bất kỳ tùy chọn nào từ trong hàm gọi lại của mình và

  	

Select a Category Below:

6 sẽ sử dụng cài đặt mới

Vì vậy, bây giờ chúng ta đã biết cách chặn cuộc gọi


  	

Select a Category Below:

6, hãy xem xét kỹ hơn cách mẫu này thực sự tạo đánh dấu cho một trang. Ví dụ của chúng tôi thực sự sử dụng, hay chúng tôi nên nói, sử dụng lại cùng một trang để hiển thị từng danh mục. Mỗi khi một trong các liên kết đặc biệt của chúng tôi được nhấp vào, hàm

// Listen for any attempts to call changePage().
$(document).bind( "pagebeforechange", function( e, data ) {

	// We only want to handle changePage() calls where the caller is
	// asking us to load a page by URL.
	if ( typeof data.toPage === "string" ) {

		// We are being asked to load a page by URL, but we only
		// want to handle URLs that request the data for a specific
		// category.
		var u = $.mobile.path.parseUrl( data.toPage ),
			re = /^#category-item/;

		if ( u.hash.search(re) !== -1 ) {

			// We're being asked to display the items for a specific category.
			// Call our internal method that builds the content for the category
			// on the fly based on our in-memory category data structure.
			showCategory( u, data.options );

			// Make sure to tell changePage() we've handled this call so it doesn't
			// have to do anything.
			e.preventDefault();
		}
	}
});

7 sẽ được gọi


  	

Select a Category Below:

7

Trong ứng dụng mẫu của chúng tôi, hàm băm của URL mà chúng tôi xử lý có 2 phần


  	

Select a Category Below:

0

Phần đầu tiên, trước dấu '?' . Điều đầu tiên mà


// Listen for any attempts to call changePage().
$(document).bind( "pagebeforechange", function( e, data ) {

	// We only want to handle changePage() calls where the caller is
	// asking us to load a page by URL.
	if ( typeof data.toPage === "string" ) {

		// We are being asked to load a page by URL, but we only
		// want to handle URLs that request the data for a specific
		// category.
		var u = $.mobile.path.parseUrl( data.toPage ),
			re = /^#category-item/;

		if ( u.hash.search(re) !== -1 ) {

			// We're being asked to display the items for a specific category.
			// Call our internal method that builds the content for the category
			// on the fly based on our in-memory category data structure.
			showCategory( u, data.options );

			// Make sure to tell changePage() we've handled this call so it doesn't
			// have to do anything.
			e.preventDefault();
		}
	}
});

7 thực hiện là giải cấu trúc hàm băm này để trích xuất id của trang để viết nội dung vào và tên của danh mục mà nó sẽ sử dụng để lấy tập dữ liệu chính xác từ đối tượng danh mục JavaScript trong bộ nhớ của chúng tôi. Sau khi tìm ra dữ liệu danh mục nào sẽ sử dụng, nó sẽ tạo đánh dấu cho danh mục, rồi đưa nó vào tiêu đề và khu vực nội dung của trang, xóa sạch mọi đánh dấu khác đã tồn tại trước đó trong các phần tử đó

Sau khi đưa đánh dấu vào, nó sẽ gọi các lệnh gọi tiện ích con jQuery Mobile thích hợp để nâng cao đánh dấu danh sách mà nó vừa đưa vào. Đây là thứ biến đánh dấu danh sách bình thường thành chế độ xem danh sách đầy đủ kiểu dáng với tất cả các hành vi của nó

Khi đã xong, nó sẽ gọi


  	

Select a Category Below:

4, chuyển cho nó phần tử DOM của trang mà chúng ta vừa sửa đổi, để báo cho khung rằng nó muốn hiển thị trang đó

Bây giờ, một vấn đề thú vị ở đây là jQuery Mobile thường cập nhật hàm băm vị trí của trình duyệt với URL được liên kết với trang mà nó đang hiển thị. Bởi vì chúng tôi đang sử dụng lại cùng một trang cho mỗi danh mục, điều này sẽ không lý tưởng vì URL cho trang đó không có thông tin danh mục cụ thể nào được liên kết với nó. Để giải quyết vấn đề này,


// Listen for any attempts to call changePage().
$(document).bind( "pagebeforechange", function( e, data ) {

	// We only want to handle changePage() calls where the caller is
	// asking us to load a page by URL.
	if ( typeof data.toPage === "string" ) {

		// We are being asked to load a page by URL, but we only
		// want to handle URLs that request the data for a specific
		// category.
		var u = $.mobile.path.parseUrl( data.toPage ),
			re = /^#category-item/;

		if ( u.hash.search(re) !== -1 ) {

			// We're being asked to display the items for a specific category.
			// Call our internal method that builds the content for the category
			// on the fly based on our in-memory category data structure.
			showCategory( u, data.options );

			// Make sure to tell changePage() we've handled this call so it doesn't
			// have to do anything.
			e.preventDefault();
		}
	}
});

7 chỉ cần đặt thuộc tính

  	

Select a Category Below:

06 trên đối tượng tùy chọn mà nó chuyển vào

  	

Select a Category Below:

6 để yêu cầu nó hiển thị URL gốc của chúng ta thay thế

Đó là mẫu một cách ngắn gọn. Cần lưu ý rằng mẫu cụ thể này và cách sử dụng nó không phải là một ví dụ hay về một ứng dụng xuống cấp nhẹ nhàng khi tắt JavaScript. Điều đó có nghĩa là nó có thể sẽ không hoạt động tốt trên trình duyệt C-Grade. Chúng tôi sẽ đăng các ví dụ khác minh họa cách xuống cấp một cách duyên dáng trong tương lai. Kiểm tra trang này để cập nhật

Làm cách nào để tạo HTML động bằng jQuery?

ví dụ về jQuery để tự động thêm div trên trang . Bằng $(tài liệu). ready() chúng tôi đã ràng buộc một trình xử lý sự kiện để nhấp vào sự kiện, nghĩa là khi người dùng nhấp vào nút này, các div mới sẽ được tạo và thêm vào bảng.

Làm cách nào để hiển thị dữ liệu động trong HTML bằng jQuery?

Trong ví dụ này, chúng ta nên thực hiện các bước sau để triển khai tải dữ liệu động bằng jQuery. Tạo giao diện người dùng được thêm vào cho từng thông tin người dùng. Tải xuống và nhập phiên bản mới nhất của tệp thư viện jQuery và tệp giao diện người dùng jQuery. Tạo trình xử lý jQuery tùy chỉnh để nối thêm giao diện người dùng và tải dữ liệu động vào đó

Làm cách nào để tạo trang HTML bằng jQuery?

Để tạo và nối thêm phần tử HTML, chúng ta sử dụng phương thức jQuery append() . Phương thức append() của jQuery được sử dụng để chèn một số nội dung vào cuối phần tử được chọn. Thông số. Nội dung. Nó là tham số bắt buộc và được sử dụng để chỉ định nội dung sẽ được chèn vào cuối phần tử được chọn.

Làm cách nào để nối thêm HTML động trong jQuery?

Phương thức chắp thêm () của jQuery . Một phần tử mới được thêm vào cuối phần tử cuối cùng. Phương thức này được đính kèm với các phần tử DIV được tạo động, đóng vai trò là vùng chứa.