Возникли проблемы с удалением части href после его добавления

Я пытаюсь создать переключатель, который назначает класс и добавляет идентификатор к целевому адресу href. Я также хочу иметь возможность удалить содержимое переменной tags из href, не удаляя остальную часть ссылки.

Моя проблема: Ну, когда я нажимаю ссылку, она правильно назначает ее href, но когда я нажимаю и уже активна ссылка, она отлично удаляет класс, но не удаляет то, что было добавлено в href. Например, если я нажимаю «строительство», я получаю http://bshoults.com/construction&, что правильно, но когда я нажимаю еще раз, я получаю http://bshoults.com/construction&construction& вместо http://bshoults.com. Следующий код удаляет весь href, а не только часть construction&.

http://jsfiddle.net/tewvd/1/

$('.tags li a').click(function() {

    // set variable to get the href of .button
    var _href = $('.button').attr("href");

    // if has class 'selected'
    if ($(this).hasClass('selected')) {

        // remove class 'selected'
        $(this).removeClass('selected');

        // set variable to get tag from id of item
        var tags = ($(this).attr('id') + "&");

        // create link based on href and tags
        $('.button').removeAttr("href", tags);
    }
    // otherwise give it a class of 'selected'
    else {
        $(this).addClass('selected');

        // set variable to get tag from id of item
        var tags = ($(this).attr('id') + "&");

        // create link based on href and tags
        $('.button').attr("href", _href + tags);
    }
});

Вот HTML:

<ul class="tags">
    <li><a href="javascript: void(0)" id="construction">construction</a></li>
    <li><a href="javascript: void(0)" id="saturday">saturday</a></li>
    <li><a href="javascript: void(0)" id="singles">singles</a></li>
    <li><a href="javascript: void(0)" id="sunday+morning">sunday morning</a></li>
    <li><a href="javascript: void(0)" id="teaching">teaching</a></li>
</ul>
<p><a href="http://bshoults.com/" class="button">Next Step &rarr;</a></p>
​


person Ben Shoults    schedule 11.10.2012    source источник
comment
Вы пытаетесь.... хорошо... так что продолжайте попытки? не вижу тут проблемы....   -  person Naftali aka Neal    schedule 11.10.2012
comment
Извините, я не добавил свою проблему ... да. Ну, когда я нажимаю на ссылку, он правильно назначает ее в href, но когда я нажимаю и уже активная ссылка, он удаляет класс нормально, но не удаляет то, что было добавлено в href. Например, если я нажимаю «Строительство», я получаю bshoults.com/sunday+morning&, что правильно, но когда Я нажимаю еще раз и получаю bshoults.com/construction&construction& вместо bshults.com   -  person Ben Shoults    schedule 11.10.2012
comment
ваши URL-адреса неверны в формате domainname.com/   -  person deefactorial    schedule 11.10.2012


Ответы (1)


removeAttr() не заменяет текст атрибута. Я просто удаляю весь атрибут.

Где у вас...

// create link based on href and tags
$('.button').removeAttr("href", tags);

...тебе нужно иметь

$('.button').attr('href', $('.button').attr('href').replace(tags, ''));
person skeelsave    schedule 11.10.2012