2009-05-19 16 views
5

Chcę dodać funkcjonalność jQuery do naszych witryn, gdzie jeden element znacznika będzie zawierał obsługę kliknięć, co będzie musiało spowodować działanie na innym znaczniku, tj. A jest wyzwalaczem dla działania z B. Nie ma gwarancji co do względnej struktury A i B, więc nie mogę polegać na selektorze jQuery, a każdy unikalny A będzie musiał odnosić się tylko do jego unikalnego odpowiednika B.Na jQuery, metadanych i zgodności XHTML

Co to jest ogólny konsensus co do najlepszego sposobu postępowania w takich okolicznościach?

Opcja 1: Kogo to obchodzi zgodność z XHTML, i tak jest przeceniana. Mamy nieprzeszkolonych producentów treści internetowych, którzy mogą wstrzyknąć znaczniki na naszą stronę, więc ścisłe przestrzeganie XHTML byłoby marzeniem. Po prostu utwórz atrybuty tagów i przeczytaj ich wartości za pomocą jQuery.

Example: 
<div class="jquery-feature-trigger" actson="targetID">Trigger</div> 

Opcja 2: użyć atrybutów, które wyglądają jak HTML, ale naprawdę nie powinno być wykorzystywane do tego celu.

Example: 
<div class="jquery-feature-trigger" rel="targetID">Trigger</div> 

Wariant 3: używać nazw takich jak ASP.NET 4.0 wyznacza się zrobić.

Example: 
<div class="jquery-feature-trigger" custom:actson="targetID">Trigger</div> 

Jeśli chcesz polecić Opcja 3, to będę wdzięczny za link do tego, co jest wymagane, aby to działało jak ja naprawdę nie mam pojęcia, czy DTD musi być wykonane albo jak połączyć je.

Opcja 4: Społeczność przepełnienia stosów ma lepszy pomysł ... ???

Odpowiedz

8

Można zbadać jQuery Metadata plugin, która może przechowywać metadane JSON w atrybucie class (lub różnych innych miejscach). Przykład:

<div class="jquery-feature-trigger { actson: 'targetID' }">Trigger</div> 
+0

To jest w zasadzie Opcja 2 – kizzx2

1

Czy istnieje sposób, w jaki można zapisać informacje w metodzie danych jQuery? Zapisuje zaśmiecania znaczników

Na przykład patrz tutaj

snipplr.com/view/9715/the-jquery-data-store/

lub bezpośredni dokumentacja

docs.jquery. com/Core/data # name

Używam go kilka razy do przechowywania informacji o moich elementach, bardzo użytecznej funkcji, która nie wydaje się być znana w szerokim zakresie!

Niestety nie można dodawać linki Jestem nowym użytkownikiem :(

1

Spróbuj tego:

<html> 
<head> 


    <script src="scripts/jquery/jquery-1.2.6.min.js" type="text/javascript"></script> 
    <!--Using highlight effect to illustrate-->  
    <script src="scripts/jquery/jquery-ui-highlight.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
    $(document).ready(function(){ 
     $(".jquery-feature-trigger").click(function(){ 
      $("#target-" + $(this).attr("id")).effect("highlight", {}, 6000); 

     }); 
}); 
</script> 

</head> 

<body> 

<div class="jquery-feature-trigger" id="1">Trigger 1</div> 
<div class="jquery-feature-trigger" id="2">Trigger 2</div> 
<div class="jquery-feature-trigger" id="3">Trigger 3</div> 
<div class="jquery-feature-target" id="target-1">Target 1</div> 
<div class="jquery-feature-target" id="target-2">Target 2</div> 
<div class="jquery-feature-target" id="target-3">Target 3</div> 

</body> 
</html> 

Więc postanowiliśmy dać cel div id "target-x" i dać spust div id "x". w ten sposób po kliknięciu na spuście x wpływa docelowy "target-x".

Wskazówka linia, która idzie

$("#target-" + $(this).attr("id")) 

W tym miejscu otrzymasz identyfikator klikniętego elementu div i zostanie on połączony z "cel-", który stanie się identyfikatorem docelowego elementu div.

0

A co z umieszczaniem wewnątrz div ukrytych danych wejściowych o odpowiednich nazwach i identyfikatorach? W ten sposób usuniesz XHTML. więc będziesz korzystać tak:

$("div_name").find("hidden_input_name").val() 
0

Nie wiem dokładnie, co robisz, ale czy możliwe jest ustawienie wyzwalacza jako znacznika zakotwiczenia, a następnie nadanie mu identyfikatora? W ten sposób:

<a href="#target1">Trigger 1</a> 
<div id="target1">Target 1</div> 

Następnie można użyć jQuery, aby znaleźć id celu, patrząc na atrybut href.

Jeśli wyzwalacz 1 ukrywa lub pokazuje cel 1 lub przewija się do niego, ta metoda przyniosłaby dodatkową korzyść, nadal wykonując coś, jeśli JavaScript był wyłączony.

6

użyłbym data- attributes za to teraz, mimo zgodności XHTML, tak:

<div class="jquery-feature-trigger" data-actson="targetID">Trigger</div> 

Są to funkcja HTML5, ale nie powoduje żadnych problemów w HTML4/XHTML inne niż nie jest ważny atrybuty w walidatorze ... ale z tego nie wynikają rzeczywiste problemy.

jQuery również has added built-in support for these since jQuery 1.4.3 w metodach .data().

+0

Zobacz także [HTML 5 danych- Atrybuty] (http://ejohn.org/blog/html-5-data-attributes/) John Resig –

Powiązane problemy