Pobieranie linku z "a href" z właściwego przycisku

0

Witajcie, znowu mam kolejny niedokończony problem.. wydaje mi się w miarę prosty ale zawsze wyjdą jakieś problemy.
Postaram się dobrze opisać.

Mam postać w html:

<div class="row">
   <div class="col-xs-12 col-md-12">
      <p class="wybor">
         <span class="check_spr">
              <div>
                  <span>
                     <input class="checkbox_spr" type="checkbox">
                 </span>
              </div>
              <a class="myLink" href="http://localhost.pl">aaa</a>
        </span>
        <span class="spr_txt">
              <b>Przykładowy tekst</b>
              <span>Przykładowy tekst</span>
        </span>
      </p>
  </div>
</div>
<!-- kolejny div .. -->
<div class="row">
   <div class="col-xs-12 col-md-12">
      <p class="wybor">
         <span class="check_spr">
              <div>
                  <span>
                     <input class="checkbox_spr" type="checkbox">
                 </span>
              </div>
             <a id="aaa1" class="myLink" onclick="$('#spr_form').submit();" href="javascript:void(0)"></a>
        </span>
        <span class="spr_txt">
              <b>Przykładowy tekst</b>
              <span>Przykładowy tekst</span>
        </span>
      </p>
  </div>
</div>

<a href="" id="butt_odbioru">ok</a>

Jest to w sumie przerobienie bezpośrednich odnośników na wybór w checkbox.
Chciałbym uzyskać taki efekt, że:
Jak zaznaczymy dany checkbox to powinien być pobierany z link (zachowanie przycisku) z najbliższego a href'a i przekazywany do przycisku na samym dole #butt_odbioru.

Dla testów robiłem wyświetlanie jakie linki są pobierane:

<script type="text/javascript">
	$(document).ready(function(){
		$('.check_spr').click(function() {
			alert($('.checkbox_spr').find('.myLink:first').attr('href'));
		});
	});
</script>

ale ta metoda nie działa, poza tym nie sprawdzi się, ponieważ inny link ma postać:

<a id="aaa1" class="myLink" onclick="$('#spr_form').submit();" href="javascript:void(0)"></a>

czyli posiada również onclick.

Wydaje mi się, że powinienem pobierać cały aby miało to sens i wyświetlać go na samym końcu ale nie wiem jak do tego podejść.. wszystko miesza się w głowie.

poprawienie tytułu i tagów wątku - @furious programming

0
  1. drugi href przecież ma tylko javascript:void, akcja z onclick i tak się nie wykona.

  2. find nie domyśli się o co Ci chodzi. masz precyzyjne określać czego potrzebujesz jak programujes, bo inaczej nic z tego. find szuka wgłąb od danego elementu. Twój checkbox nie ma już nic głębiej (z definicji input nie może zawierać w sobie kolejnych elementów).

poza tym używając jeszcze raz selektora po klasie - powodujesz, że szukasz od całej kolekcji inputów jeszcze raz, a nie od tego klikniętego tylko.

Ciebie interesuje coś w rodzaju:

poczytaj o this i closest i generalnie wszystkim, co masz w dokumentacji jQuery odnośnie "wędrowania" po DOM: http://api.jquery.com/category/traversing/

$(this).closest('.check_spr').find('a.myLink').attr('href');
0

Dziękuję za odpowiedź.
Ok. ucząc się closest zrobiłem prosty przykład ale on mi nie działa.. nie wiem, dlaczego:
http://jsbin.com/pitone/4/edit

Teoretycznie powinno zostać wyświetlona zawartość span.przycisk .. jeśli dobrze myślę..

Z tego co widzę closest nie szuka najbliższego sąsiadującego elementu tylko sprawdza rodzica jeśli dobrze rozumiem.. a to rozwiązanie raczej w moim przypadku się nie sprawdzi :/

0

nie dziala bo span jest w galezi obok. wiec w tym konkretnym przypadku odwolaj sie do rodzica przez .parent(), a potem uzyj .find() do znalezenia span.przycisk, bo closest, jedzie do gory czyli w twoim przypadku input => div => div => body.

0
<script type="text/javascript">
	$(document).ready(function(){
		$('input.checkbox_pay').click(function() {
			var pay_link = ($(this).closest('.check_spr').find('.myLink').html());
			$('#butt_odbioru').empty().append(pay_link);
		});		
	});
</script>

Dziękuję za podpowiedzi. Zrobiłem w ten sposób, że przycisk w całości (nie sam link) pobierany jest do pojemnika, który przygotowałem.

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