2009-04-22 35 views
6

Tôi thường cố gắng gắn bó với các thuộc tính chỉ có DOM khi viết Javascript. Bây giờ tôi đã chuyển từ Prototype sang jQuery, tôi có thể lấy một số mileage nghiêm trọng trong việc thêm các thuộc tính của riêng mình vào các phần tử DOM khác nhau, chủ yếu trong lĩnh vực có thể thiết lập một quy ước mã hóa rất dễ đọc để xử lý các yêu cầu AJAX.Thuộc tính HTML không (X) ... bất kỳ nhược điểm nào?

Như một ví dụ ngắn, điều này có nghĩa là tôi làm những việc như

<div type="book" app_id="13"> 
    <a href="#" action="delete">delete</a> 
</div> 

Và sau đó tôi có thể thiết lập mã để tìm tất cả <a> thẻ với một thuộc tính action, tìm cha mẹ với một typeapp_id, và sau đó làm các hoạt động CRUD ... tất cả mà không cần tôi phải viết thêm mã.

Có bất kỳ cạm bẫy nào (không phải là khiếu nại XHTML nghiêm ngặt) mà tôi nên theo dõi và/hoặc bất kỳ thói quen tốt nào tôi nên xem xét để mô phỏng? Làm thế nào về một cách tiêu chuẩn của việc thiết lập không gian tên thuộc tính của riêng tôi?

Trả lời

6

Theo this question, sử dụng không gian tên XML trong XHTML 1.0 không hợp lệ. Việc thêm các thuộc tính của riêng bạn vào cùng một không gian tên có vẻ tồi tệ hơn đối với tôi, vì chúng chắc chắn không hợp lệ, ngay cả khi XML đi xa.

Tôi đã làm điều này, tôi sẽ lấy được số dặm của mình ra khỏi các thuộc tính classrel. Ví dụ:

<div class="book" id="book_13"> 
    <a href="http://example.com/url/to/delete/non/ajaxily" class="delete">delete</a> 
</div> 
+0

Thật không may, nếu bạn muốn sau đó sử dụng các lớp học khác nhau để cung cấp thông tin phản hồi thị giác (nói , các nền tảng khác nhau cho một cuốn sách đã kiểm tra và không được kiểm tra), bạn cần một phần tử trình bao khác hoặc cần phải đi với tuyến đường thuộc tính tùy chỉnh. –

+2

@Don - Không, bạn không. Bạn có thể sử dụng nhiều lớp trên bất kỳ phần tử nào, chỉ tách chúng ra bằng dấu cách. "sách đã kiểm tra vào ngày mai" ví dụ là hoàn toàn hợp lệ –

+0

@Mark - Bạn nói đúng nhưng cách bạn nói cần phân tích cú pháp không thích hợp hơn. Tôi sẽ chọn (và thực sự đã chọn) đường dẫn thuộc tính tùy chỉnh. – BYK

0

Tôi thấy không có gì sai với phương pháp này. Trên thực tế tôi đã thấy nhiều ví dụ về điều này và bản thân tôi, đã sử dụng cách tiếp cận này trên nhiều ứng dụng và không phải đối mặt với bất kỳ trở ngại nào ngoại trừ vấn đề xác nhận đó. Vì vậy, tôi nghĩ bạn được tự do đi =)

+0

Bạn chắc chắn sẽ phải tìm ra vô tình bằng cách sử dụng tên của một phần tử mà một hoặc nhiều trình duyệt sẽ hành động. Hầu hết các trình duyệt chấp nhận các thuộc tính nhất định ngay cả khi chúng không nhất thiết phải hợp lệ (đặc biệt là IE). – Travis

0

Tôi không thấy bất kỳ điều gì sai khi thêm thuộc tính không hợp lệ trừ khi ai đó đang sử dụng một số trình duyệt không xác định siêu nghiêm ngặt và không thành công. Điều này có thể xảy ra, tôi cho rằng ... nhưng nó đáng ngờ ...

Một lựa chọn tốt, là sử dụng jQuery Metadata Plugin để lưu trữ các cặp khóa-giá trị dễ truy cập từ bên trong một thuộc tính.

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