2011-04-23 99 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