Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX]Dodawanie i usuwanie znacznika <b> w Jquery
Forum PHP.pl > Forum > Przedszkole
northwest
Witam serdecznie,
Mam następujący link (docelowo mam ich więcej):
  1. <a class="setmes1" href="abc.html" >O mnie</a>


chciałbym po kliknięciu w powyższy link uzyskać następujący efekt:
  1. <b><a class="setmes1" href="abc.html" >O mnie</a></b>


W jaki sposób można to zrobić?

Kombinowałem coś takiego:
  1. $(".setmes2").html("<b>");
  2. $( "<b>" ).insertAfter( ".setmes2" );
  3. $(".setmes2").prepend("<b>");


Ale niestety nie dało efektu jaki chciałem sad.gif Ma ktoś może pomysł jak to rozwiązać?

Bardzo proszę o pomoc,
Northwest
markuz
[JAVASCRIPT] pobierz, plaintext
  1. $('.setmes1').click(function() {
  2. $(this).css('font-weight', 'bold');
  3. return false;
  4. });
[JAVASCRIPT] pobierz, plaintext

Nie lepiej tak?
northwest
tylko to dodaje style = "font-weight:bold" - a ja potrzebuję dodać fizycznie <b> i </b> przed tym linkiem smile.gif
markuz
[JAVASCRIPT] pobierz, plaintext
  1. $('.setmes1').click(function() {
  2. $(this).wrap('<b></b>');
  3. return false;
  4. });
[JAVASCRIPT] pobierz, plaintext


Dałem Ci poprzednią odpowiedź, ponieważ nie widzę sensu dodania znacznika <b> w innym celu niż pogrubienie.
northwest
dziękuję, działa smile.gif a jak usunąć potem takie pogrubienie??

  1. $('.setmes2').click(function() {
  2. $(this).wrap('<b></b>');
  3. $('.setmes1').unwrap('<b></b>');
  4. $('.setmes3').unwrap('<b></b>');
  5. $('.setmes4').unwrap('<b></b>');
  6. $('.setmes5').unwrap('<b></b>');
  7. $('.setmes6').unwrap('<b></b>');
  8. $('.setmes7').unwrap('<b></b>');
  9. return false;
  10. });



coś takiego psuje mi menu :-(
markuz
Po pierwsze - po Co ci klasy od setmes1 do setmes7? Jak już bardzo Ci to potrzebne to dodaj jeszcze jedną klasę o nazwie np. bwrap tzn.
  1. <a class="setmes1 bwrap" href="abc.html" >O mnie</a>
  2. <a class="setmes2 bwrap" href="abc.html" >Coś tam</a>

Po drugie - Chcesz najpierw dodać a potem usunąć - dzięki czemu nie zauważysz różnicy... Może chcesz za pierwszym kliknięciem dodać <b> a za drugim usunąć?
[JAVASCRIPT] pobierz, plaintext
  1. $('.bwrap').click(function() {
  2. if($(this).parent().nodeName.toLowerCase() === 'b') {
  3. $(this).unwrap('<b></b>');
  4. } else {
  5. $(this).wrap('<b></b>');
  6. }
  7. });
[JAVASCRIPT] pobierz, plaintext


Ciekawi mnie cel w jakim to robisz - może się nim z nami podzielisz?
northwest
dziękuję za pomoc smile.gif Podany kod jednak nie działa sad.gif

Tak, dokładnie. Mam menu na stronie z 7 pozycjami. Po kliknięciu na każdą chce pogrubić tą aktualną - i usunąć pogrubienie z tych wcześniej wybranych.
markuz
http://jsfiddle.net/czMn4/
northwest
dziękuję, ale to jest znowu z CSS - a nie "b" wink.gif

Może pokaże mój kod:

  1. <a class="setmes1 bwrap" href="a.html" >1</a>
  2. <a class="setmes2 bwrap" href="a.html" >2</a>
  3. <a class="setmes3 bwrap" href="a.html" >3</a>
  4. <a class="setmes4 bwrap" href="a.html" >4</a>
  5. <a class="setmes5 bwrap" href="a.html">5</a>
  6. <a class="setmes6 bwrap" href="a.html" >6</a>
  7. <a class="setmes7 bwrap" href="a.html" >7</a>


Po kliknięciu chce wyczyścić wszystkie linki z "<b>" i "</b>" + zaznaczyć tylko i wyłącznie link który został kliknięty.
Przykładowo klikam link nr 5 i otrzymuję:
  1. <a class="setmes1 bwrap" href="a.html" >1</a>
  2. <a class="setmes2 bwrap" href="a.html" >2</a>
  3. <a class="setmes3 bwrap" href="a.html" >3</a>
  4. <a class="setmes4 bwrap" href="a.html" >4</a>
  5. <a class="setmes5 bwrap" href="a.html">5</a>
  6. <a class="setmes6 bwrap" href="a.html" >6</a>
  7. <a class="setmes7 bwrap" href="a.html" >7</a>

ziolo
[JAVASCRIPT] pobierz, plaintext
  1. $('.bwrap').click(function() {
  2. $('.bwrap').each(function(){
  3. if($(this).parent().nodeName.toLowerCase() === 'b')
  4. $(this).unwrap();
  5. });
  6. $(this).wrap('<b></b>');
  7. });
[JAVASCRIPT] pobierz, plaintext


A coś takiego ?
northwest
zwraca błąd:
TypeError: $(...).parent(...).nodeName is undefined
if($(this).parent().nodeName.toLowerCase() === 'b')
ziolo
Teraz będzie ok.
[JAVASCRIPT] pobierz, plaintext
  1. $('.bwrap').click(function(e) {
  2. e.preventDefault();
  3. $('.bwrap').each(function(){
  4. if($(this).parent().prop('nodeName').toLowerCase() === 'b')
  5. $(this).unwrap();
  6. });
  7. $(this).wrap('<b></b>');
  8. });
[JAVASCRIPT] pobierz, plaintext


Edit.

Usuń e.preventDefault();
northwest
dziękuję za pomoc - pomogło smile.gif

mam jeszcze jedno pytanie, chciałbym żeby w momencie gdy $_GET['luk'] == 2 - automatycznie klikała się zakładka odpowiednia + wyświetlał się odpowiedni iframe...

zrobiłem taki kod:
  1. $(document).ready(function(){
  2. $(".setmes2").trigger('click');
  3. });


Skrypt poprawnie oznacza <b> i </b> - klikniętą pozycję (czyli funkcja $('.bwrap').click - działa poprawnie) - jednak
w iframe nie wyświetla się poprawna treść...

Macie może pomysł co jest nie tak??sad.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.