2011-10-13 10 views
5

Tôi đang sử dụng các tab jquery-ui để cho phép người dùng tạo các tab của riêng mình, sau đó chuyển đổi ofcourse giữa các tab khi chúng thấy phù hợp. Nội dung trong các tiện ích con là các tiện ích nhỏ giống như các chương trình nhỏ theo cách riêng của chúng. Sau đó, người dùng có thể chọn tiện ích họ muốn trên bất kỳ tab cụ thể nào.jquery-ui-tab nội dung can thiệp

Điều này làm việc tốt miễn là bất kỳ tiện ích nhất định nào chỉ được đặt trong tab 1, tuy nhiên, mọi thứ bắt đầu sai khi bất kỳ tiện ích nào được thêm vào 2 tab trở lên. Khi các widget được tạo ra, chúng sử dụng id từ cơ sở dữ liệu. Ví dụ . Nếu một tiện ích cụ thể được thêm vào 2 tab trở lên, chúng sẽ kết thúc bằng 2 div với id giống id, ví dụ: widget_1, gây ra sự cố như bạn có thể tưởng tượng.

Vì vậy, câu hỏi của tôi là, cách tốt nhất để giải quyết vấn đề như vậy là gì?

Tôi muốn tôi biết trước đó rằng họ muốn có thể sử dụng cùng một tiện ích trên nhiều tab. Tôi nhận được cảm giác này gần như sẽ phải được viết lại hoàn toàn ...

Trả lời

2

nào "div gọi div1" có "div1" như lớp hoặc id?

câu hỏi của bạn có vẻ như nó là một id, và thats tất cả các vấn đề: the id has to be unique

để giải quyết việc này, làm việc với các lớp - chúng có thể được sử dụng nhiều lần và bạn sẽ có thể làm những điều chính xác cùng (nhưng đó là một chút khó để nói mà không nhìn thấy một số mã).

EDIT: thay đổi liên kết nắm tay của tôi để hiển thị đề xuất w3c. Tôi đã liên kết this article trước

+0

chỉ sử dụng dòng cuối cùng của bài viết * Nếu bạn muốn trang web của bạn để xác nhận như XHTML hay HTML, sau đó bạn nên có ID duy nhất trên trang của bạn. * - Tất cả mọi thứ hoạt động tốt mà không cần đang xác thực! Tôi vẫn không hiểu tại sao mọi người lại phụ thuộc quá nhiều vào tài liệu giới thiệu ... Đề xuất thoát ra ngoài, nhưng có những trường hợp ở đây và ở đó chúng tôi không thể đơn giản tuân theo các khuyến nghị, và hãy để tôi đảm bảo rằng tất cả vẫn hoạt động tốt. .. ** trong mọi trình duyệt! ** – balexandre

+0

tôi đồng ý với bạn, nhưng trong trường hợp này, chúng tôi không thể thực hiện theo các đề xuất "- điều này rất dễ dàng và nếu bạn có thể chọn làm theo đề xuất hoặc phá vỡ với nó, tại sao mọi người nên chọn để phá vỡ nó ... – oezi

-2

Đây không phải là phương pháp được khuyến nghị để có cùng một trang id trong cùng một trang, nhưng bạn không gặp vấn đề gì cả, tất cả những gì bạn cần thực hiện trong cuộc gọi javascript của mình ví dụ:

$(".tab-1 #div1")... thay vì chỉ $("#div1")...

Mặc dù vậy, tôi sẽ luôn luôn tránh việc cùng id và "nói" máy phát điện của bạn để sử dụng div1-random-number và luôn luôn sử dụng các lớp để có được những tiện ích con bằng hiện tab như đã thấy trong mã ở trên

Live example on JsBin

+1

tôi sẽ không khuyên bạn nên sử dụng cùng một id hai lần, ngay cả khi các trình duyệt chấp nhận điều đó. nó vẫn không đúng và ngược lại với định nghĩa: http://www.w3.org/TR/html401/struct/global.html#h-7.5.2 – oezi

+0

** W3 chỉ là một điều đề xuất **, đừng nghĩ rằng lỗ web thế giới sẽ treo nếu bạn không làm theo một đề nghị! – balexandre

+1

** Các khuyến nghị có lý do **, đừng nghĩ rằng mọi người sử dụng trình duyệt hiện đại - vẫn còn những người sử dụng IE6, Netscape, Trình duyệt màn hình đặc biệt và rất nhiều thứ điên rồ/cũ khác có thể _have_ một vấn đề với nhiều ID giống nhau. (và đó là cùng một công việc để sử dụng một id hoặc một lớp học. vậy tại sao bất cứ ai nên chia tay với các khuyến nghị mà không có advanages? tại tốt nhất, không có gì xảy ra, nhưng bạn _might_ nhận được một loạt các probolems) – oezi