Wątek przeniesiony 2016-05-24 17:37 z Webmastering przez dzek69.

Show/hide div dla wszystkich wyników z bazy.

0

Witam. Mój problem polega na tym, że po zastosowaniu funkcji jquery dla chowania i pokazywania za pomocą kliknięcia wyświetlonych numerów telefonów z bazy, działa tylko dla pierwszego wyniku. Przy klikaniu w inne otwiera i zamyka się tylko pierwszy.
Funkcja:

<script>
function op(obj) {
x=document.getElementById(obj);
if(x.style.display == "none") x.style.display = "block";
else x.style.display = "none"
}
</script>

Tutaj ją stosuję:

<p>
<b> Numer komórkowy: </b>
<a href="/" onClick="op('poka'); return false;">Pokaż Numer telefonu</a>
<div id="poka" style="display:none"><?php echo '+48 '.$c_mob_nr;?></div>
</p>
0

Pewnie nadałeś tym elementom takie samo id. A powinno być unikalne. Nadaj klasę i potem szukaj elementów za jej pośrednictwem.

0

A nie dałeś przypadkiem ID, które powinno być unikalne dla strony (w odróżnieniu od class) wszędzie takiego samego?
Do tego jak używasz jQuery to poczytaj o funkcji toggle() :)

Na pewno używasz jakiejś pętli to wyrzucania tych nr telefonów, użyj jej do wygenerowania unikalnych ID dla każdego nr i będzie banglać.

0

Petla u mnie wygląda tak.

foreach ( $result as $print )   {
		
		$c_name  		= stripslashes($print->company_name);
		$c_opis  		= stripslashes($print->company_opis);
		$c_mob_nr		= stripslashes($print->telefon);
		$c_nip 		= stripslashes($print->company_nip); 
     

Teraz dodałem by zapełniało nowe id:

<?php
$count = 0;
    foreach ( $result as $print ) {
        $c_name  		= stripslashes($print->company_name);
		$c_opis  		= stripslashes($print->company_opis);
		$c_mob_nr		= stripslashes($print->telefon);
		$c_nip 		= stripslashes($print->company_nip); 
               echo '<p><b> Numer komórkowy: </b>
<a href="/" onClick="op("poka'.$count.'"); return false;">Pokaż Numer telefonu</a>
<div id="poka'.$count.'" style="display:none"><?php echo '+48 '.$c_mob_nr;?></div>
</p>';
            ++$count;
        }
    }
?>

Tak to ma wyglądać? W między czasie poczytam sobie o tym toggle();

1

Nie. Id zmień na class.

Oczywiście getElementById wtedy nie zadziała, ale na pewno znajdziesz w google jak to łatwo obejść bez zatrudniania jQuery.

0

Ok podziałało, dzięki. Poczytałem o Toggle i zastosowałem też klasy dla divów:

 <script type="text/javascript">
    $(document).ready(function(){

        $(".button_nr").click(function(e) {
    $(".telefon_nr").toggle();
	return false;

    e.preventDefault();
});
    });
</script>

Tutaj wykorzystanie funkcji:

<button class="button_nr">Pokaż numer tel</button>
	<div class="telefon_nr"><?php echo '+48 '.$c_mob_nr;?></div>

Teraz jeszcze tylko mam problem z tym, że po kliknięciu w jedno, otwiera się we wszystkich. Da się jakoś zrobić, by dla każdego z osoba trzeba kliknąć w button?

1
$(".button_nr").click(function() { $(this).parent().find(".telefon_nr").toggle(); });

Przy założeniu, że struktura wygląda tak, że telefon i button mają wspólnego rodzica.

0

Super! Teraz działa jak należy. Bardzo dziękuję. Wrzuciłem je do wspólnego diva (by miały wspólnego rodzica), dodałem to co napisałeś wyżej i pięknie "chodzi".

1 użytkowników online, w tym zalogowanych: 0, gości: 1