2015-08-24 15 views
6

Jestem nowicjuszem w JavaScript i CSS, a moje umiejętności są w najlepszym wypadku słabe. Mam pomysł, jak rozwiązać mój problem, ale nie mam wiedzy, aby go rozwiązać.
mam kod jak poniżej:Kierowanie DIV bez #id, dodawanie #id

<div class="detail"> 
    <div class="detail-group"></div> 
    <div class="detail-group"></div> 
    <div class="detail-group"></div> 
</div> 

muszę dołączyć jeden istniejącą DIV z unikalnym ID dla każdego z div .detail-grupowych. Muszę określić grupę .detail, nawet jeśli są dokładnie takie same. Nie mam dostępu do kodu HTML, aby edytować go ręcznie.
Jeśli mam rację, moim najlepszym ujęciem jest użycie JS do ustawienia identyfikatorów dla tych DIV grup DETail.
użyłem CSS kierować każdy z nich z tego i stworzyć różnicę:

.detail-group:nth-child(1) { padding-right: 0.01px } 
.detail-group:nth-child(2) { padding-right: 0.02px } 
.detail-group:nth-child(3) { padding-right: 0.03px } 

Ale nie wiem jak wykryć tę różnicę z JS i pracować z nim. Czy można rozróżnić kolejność elementów w JS? Jeśli tak, to jak to zrobić. A jak dodać do nich identyfikatory?

Notatka boczna, pracuję z modułami Enjin i to dlatego nie mam dostępu do ich kodu HTML. Jeśli ktoś ma doświadczenie w tej dziedzinie, będzie to bardzo cenne.

+1

Proszę zaznaczyć, czy dana odpowiedź pracował dla ciebie. –

+0

Pytanie naprawdę brzmi: * co chcesz zrobić z divami? dodawać do nich zawartość? ** Wtedy nie musisz dodawać do nich identyfikatorów ***. Możesz wybrać i celować divami w JS, tak jak robisz to w CSS i odpowiednio nimi manipulować. Musisz jednak zachować unikalne identyfikatory. – PeterKA

+0

Początkowo próbowałem rozwiązać problem sam i ponieważ nie wiem prawie nic na temat JS, użyłem następnej rzeczy, którą znalazłem użyteczną. –

Odpowiedz

11

Można użyć .attr() funkcję wraz z jego zwrotnego ustawić identyfikatory przy użyciu indeksu elementów Gr:

$('.detail-group').attr('id', function(i) { 
    return 'detailgroup'+(i+1); 
}); 

Working Demo

+0

@Radosław: .. cieszymy się, że pomaga :) –

0

Nie trzeba przypisać identyfikatory div w celu celować w nich. Powiedzmy następujące zmienne pokazy - 'index of target div = index of element in array', 'ID of existing ID to append'

var ids = ['divid1','divid2','divid3']; 

Następnie można użyć następującego kodu do dołączania div jest z powyższych identyfikatorów do odpowiednich div docelowych:

$('.detail-group').append(function(i) { 
    return $('#' + ids[i]); 
    //or return $('#divid' + (i+1)); 
}); 

Alternatywnie, powiedzmy, że jesteś w stanie aby wybrać istniejące dIV poprzez wspólny klasie powiedzieć, .content-div i divs reprezentuje tych div, a następnie można zrobić to w ten sposób:

var divs = $('.content-div'); 
$('.detail-group').append(function(i) { 
    return divs[i]; 
}); 

Jednakże, jeśli dodajesz ten sam div wszystkie trzy DIV docelowe rozważyć usunięcie identyfikatora przed więc nie kończy się z duplikatów identyfikatorów:

//select the one DIV 
var oneDiv = $('#oneDiv'); 
//detach it from DOM 
oneDiv.detach(); 
//remove ID 
oneDiv.removeAttr('id'); 
//clone oneDiv and add to the target DIVs 
$('.detail-group').append(function() { 
    return oneDiv.clone(); 
}); 
+0

Nie jestem pewien, czy jest wymagane do utrzymania oddzielnej tablicy do przypisywania ID. Spowoduje to również przerwę, gdy liczba elementów div nie pasuje do liczby elementów tablicy. –

+0

Dobry punkt @MilindAnantwar! – PeterKA

+0

Powodem, dla którego zapytałem, jak dodać identyfikatory, jest rozwiązanie kilku innych problemów z powszechnym rozwiązaniem. Dziękuję za twój pomysł, przyda się też. Ponieważ nie jestem doświadczony, polegam na kodzie "bułki tartej", aby rozwiązać moje problemy. –

Powiązane problemy