2010-02-22 20 views
9

bitowy zatrzymany starać się osiągnąć coś w jQuery i zastanawiał się, czy ktoś może pomóc ..Jquery: łączenie wartości z dwóch elementów

tworzę własną zmienił w funkcji miejsca, gdzie należy kliknąć na przycisk Edycja, a zawartość mojej listy definicji zostaje zamieniona dla formularza ... z danymi wstępnie wypełnionymi. Podobny do this

Wszystko jest w porządku oprócz każdej sekcji edycji (Komentarze użytkownika) jest znakowany, i może mieć wiele tagów, podobnie jak tutaj na stackoverflow ... Więc mój HTML do wyjścia tag dla każdego komentarza jest tak

<dl id='comment_id'> 
    <dt class="comment title">#i.getsTitle()#</a></dt> 
      // Other info 
    <dd class="categories"> 
     <dl> 
     <dt>Tags:</dt> 
    <cfloop array="#i.getCategory()#" index="ii"> 
    <dd class="category"><a href="">#ii.getsCategory()#</a></dd> 
</cfloop> 
    </dl> 
    </dd> 

Więc moje gniazdo kategorie lub tagi w liście definicji, kontrolowane przez pętlę.

Co próbowałem zrobić tak daleko jest złapać zawartość tych catergories jQuery, tak że po kliknięciu edytować pole formularza kategoria zostaną napełnione z istniejących tagów dla tego komentarza ....

$('.edit').click(function(){ 
    // Grab the text for all categories 
var sCategory = $(this).parents('dl').find('dd.categories dl dd.category').text(); 

//Build a form and prefill the category form field with the sCategory Variable 
form + '' // Other Data to build form 
form += '<dl><input name="sCategory" type="text" value="' + sCategory + '" /></dl>' 

// Show edit form prefilled with appropriate content 
$('dl#comment_id).(form); 

Działa, ale wyświetla wszystkie kategorie dla tego wpisu obok siebie, bez spacji ... np. "JqueryColdfusionValidation". Czy zastanawiasz się, jak wyświetlić go jako tak „JqueryColdfusionValidation” .... Im zgadywania tutaj wymagana jest funkcja .each, ale nieco zakleszczony w jaki sposób wdrożyć

Dziękujemy

Odpowiedz

24

Map() jest dobre dla tego rodzaju rzecz. Spróbuj tego:

var sCategory = $(this).parents('dl').find('dd.categories dl dd.category').map(function() { 
    return $(this).text(); 
}).get().join(' '); 
+0

Ów pracował jak piękna, dzięki bardzo za pomoc – namtax

+0

Jesteś bardzo mile widziane. Po prostu nie zapomnij kliknąć pola wyboru. : o) – user113716

+0

mój błąd, zapomniałem zrobić to ... wszystko zrobione – namtax

1

Najprostszym sposobem, aby dodać nic wokół:

var sCategory = ''; 
$(this).parents('dl').find('dd.categories dl dd.category').each(function(){ 
sCategory+=' '+$(this).text()+' '; 
}) 
+0

Jak to jest łatwiejsze niż przy użyciu mapy()? Plus kończy się zbytecznymi przestrzeniami na początku i końcu łańcucha. – user113716