2012-07-01 2 views
0

Когда я нажимаю на элемент списка ниже (li), я меняю его идентификатор из спрайт-сердца на спрайт-звезды. Это хорошо работает.Изменение атрибута id элемента списка с помощью jquery

Но как только я снова нажимаю li, он обрабатывает функцию, такую ​​как sprite-heart, но теперь функция должна быть обойдена, когда элемент списка - это спрайт-звезды.

Как это изменить?

<li><a class="navit" id="sprite-heart" title="Love this webcam! Add to my personal webcam page" href="#"><span class="love">Love this webcam</span></a></li> 




    $("#sprite-heart").click(function() { 

    addfavcam(); 

    }); 

    function addfavcam() 
    { 


    $.ajax({ 
     url: '/v3/ajax/addfavourite.php', 
     type: 'POST', 
     data: {id: <?php echo $cam_id; ?>, usr: 'x<?php echo $user_id; ?>'}, 
     success: function(responseText){ 


    $('#sprite-heart').attr('id','sprite-stars'); 
    $('#sprite-heart,#sprite-stars').attr('title','My favourite'); 

     }, 
     error: function(responseText){ 
     } 
    }); 

    } 
+0

Изменение атрибута ID не работает надежно во всех браузерах IIRC –

+1

В качестве побочного примечание: Идентификаторы элементов должны быть уникальными на странице, изменение идентификаторов динамически увеличивает риск заканчиваясь с элементами с тем же идентификатором, который, в свою очередь, является недопустимым html и имеет нежелательные побочные эффекты. Если вы хотите указать состояние или указать что-то еще в элементе, используйте класс, настраиваемый атрибут или '$ (селектор) .data'. – Nope

ответ

2

необходимо отменить событие, а не просто изменить идентификатор. просто добавьте

$("#sprite-heart").click(function() { $(this).unbind('click'); ... } 
Смежные вопросы