2012-07-01 30 views
0

當我點擊下面的列表項(li)時,我將它的id從sprite-heart改爲sprite-stars。這很好。用jquery更改列表項的id屬性

但是,一旦我再次單擊李,它會處理像它是精靈心臟的功能,但現在該功能應該繞過列表項目是精靈星。

我該如何改變這種情況?

<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

作爲一個側面說明:元素必須在頁面上唯一的ID,動態變化的IDS增加的元素結束了風險具有相同的ID,這反過來是無效的HTML和有不需要的副作用。如果您想指示狀態或在元素上指示其他內容,請使用類,自定義屬性或'$(selector).data'。 – Nope

回答

2

您需要解除綁定事件,而不僅僅是更改id。只需添加

$("#sprite-heart").click(function() { $(this).unbind('click'); ... }