2011-11-16 38 views
0

我试图重新将类应用到通过ajax加载的新内容。重新将类应用到ajax加载的内容

HTML:

<a href="#" id="link_1">link_1</a> 
<a href="#" id="link_2">link_2</a> 
<a href="#" id="link_3">link_3</a> 
    <a href="#" id="ajax-load">load more</a> 

<ul id="list"> 
    <li class="li-one">one content</li> 
    <li class="li-two">two content</li> 
    <li class="li-three">three content</li> 
</ul> 

jQuery脚本:

$(document).ready(function() { 
      $('#link_1').live('click', function() { 
       $('.li-one').addClass('hide'); 
      }); 
      $('#link_2').live('click', function() { 
       $('.li-two').addClass('hide'); 
      }); 
      $('#link_3').live('click', function() { 
       $('.li-three').addClass('hide'); 
      }); 
      $('#load-ajax').click(function() { 
       $.get('http://link', function(data) { 
       $('#list').append(data); 
     }); 
    }); 
}); 

Ajax的HTML页面代码:

<li class="li-one">one content</li> 
<li class="li-two">two content</li> 
<li class="li-three">three content</li> 

TODO:

用户点击link_1 - >'li-one'得到'hidden'class - >用户点击ajax - > ajax加载但是所有'li-one'用'hidden'class

用户点击link_2 - >'li-two'get 'hidden'class - >用户点击ajax - > ajax加载但是所有'li-two'用'hidden'class

用户点击link_3 - >'li-three'get'hidden'class - > user click ajax - >阿贾克斯负载但所有'三三''隐藏'类

它应该像过滤器一样工作。

+1

然后你的ajax在哪里? –

+0

如果你只是想添加类,那么你不需要Ajax。 –

+0

只需添加行$('。li-one')。addClass('hide');在你的ajax调用之后。我不认为有办法'提前告诉'。或者你可以创建一个默认的回调,你坚持每个Ajax回调。我有点担心看到没有AJAX,虽然 – Jerome

回答

0

对我来说,似乎每次你加载的内容中有类li-one你不想显示它?

为什么不改变默认隐藏的li-one的风格,那么只有在需要时才显示它?

0

是,

将回调当数据被加载并添加到文件,并再次呼吁:$(” 。李酮隐藏') ')addClass(';

但是,让我优化代码:

function startList() { 
    $('ul#list li').live('click', function() { 
     $(this).addClass('hide'); 
    }); 
} 

$(document).ready(function() { 
    startList() 
}); 

当加载数据时,你可以调用startList()做就可以了新的数据的工作。