2011-04-23 137 views
1

我用jQuery創建一些標籤,我想添加新的選項卡。我正在使用的方法是將一個類「擴展」給我想創建一個新選項卡並刪除它們的默認功能的錨點。然後我將內容加載到新創建的div中。問題在於,ajax加載內容中的類「擴展」錨點不會繼承這種特定的行爲。任何幫助表示讚賞。謝謝。 代碼:問題與jQuery標籤

$(function(){ 
    $("#tabs").tabs(); 
    $("a.extend").click(function(event) { 
    event.preventDefault(); 
    var $name=$(this).attr("name"); 
    var $link=$(this).attr("href"); 
    $("#tabs").tabs("add", "#"+$name,$(this).attr("name")); 
    $("#"+$name).load($link); 
    //$(".extend").click(function(event){ event.preventDefault();}); this didn't fix it 
    }); 
    }); 

回答

0

最簡單的做的就是使用jQuery的「.delegate()」來處理‘點擊’事件的事:

$('body').delegate('a.extend', 'click', function(event) { 
    // your code here, as in your question 
}); 

這使事件處理程序的<body>標記,等待「點擊」事件冒泡,然後對那些實際的目標元件是<a>與類「擴展」,將分派給處理程序。這將爲<a>元素原本存在以及那些後來添加的工作。

你不必把處理程序上<body>標籤;你可以把它放在包含錨的任何方便的父元素上。 「.delegate()」函數就像「.live()」函數,但是我個人更喜歡它,因爲它更靈活,更像「類似jQuery」,並且效率更高一些。

+0

工程就像一個魅力至今。必須研究api來找出原因。謝謝! – Vidi 2011-04-23 18:10:09