2011-02-17 46 views
0

我有一点问题。我试图用Jquery load()函数使用AJAX加载页面上的东西。内容加载完成后,再次点击链接,我需要加载内容以上传/隐藏;并且当点击3次以上的同一链接时,我只需切换加载的内容显示,因为它已经加载一次。链接点击后Jquery类被删除,但第二次点击仍然被识别

我的问题是,单击链接一次后,我删除了loadable类,但在第二次点击时,同样的函数执行,就好像类仍然存在。这是我的HTML:

<a title="Food" id="food" class="loadable" href="get-taste/food">Food</a> 
<div class="food_load_space"></div> 

该链接触发负载和数据加载到.food_load_space。这是我的JS:

$(document).ready(function(){ 
    $('a.loadable').click(function(){ //executed upon link click 1; 
    url = $(this).attr('href'); 
    linkid = $(this).attr('id'); 
    toload = url + ' #content-area'; 
    //now, remove loadable, add loaded and expanded 
    $(this).removeClass('loadable'); 
    alert(toload); 
    $('.' + linkid + '_load_space').load(toload); 
    return false; 
    }); //kill loadable 

我也这样脚本知道添加.expanded类和.loaded类计划在该州的联系是什么,但偏偏就是这个功能火灾就算了。 .loadable班不见了。

+2

请修复代码部分。 – 2011-02-17 02:53:05

回答

3

该事件已经被绑定到元素,你需要手动unbind从元素的事件(S )有问题。这可以通过拨打$(this).unbind('click');完成。

您也可能希望检查元素是否具有事件函数中的类。

+0

嗨,安德鲁,我试过了,但在解绑后,第二次调用不会绑定。要尝试使用条件来检查。 – MrMaksimize 2011-02-17 13:29:30

+0

好吧,这很糟糕。出于某种原因,第二个“点击”不会绑定。所以我只是把它全部保存在一个函数中,只是做了一次hasClass检查。为这个想法谢绝了! – MrMaksimize 2011-02-17 13:33:57

2

您的第二次点击被识别的原因是因为jQuery已经将操作绑定到了您的元素。您只能通过删除课程来解除绑定。该类仅用于帮助您选择该元素(并设计您的元素)。

要删除的事件绑定,在你点击功能,你应该这样做:

$('a.loadable').click(function() { 
    ...your other code... 
    $(this).unbind('click'); 
}); 
+0

嗨Kchau,我试过了,但在解绑后,第二次调用不会绑定。有任何想法吗?提前致谢! – MrMaksimize 2011-02-17 13:28:57

3

处理程序绑定了元素,而不是选择器。

如果您只希望它存在一次点击,请使用one()(docs)方法将其绑定。

$('a.loadable').one('click', function(){ 
    // and so on... 

它会在第一次点击后自动解除绑定。