我有点卡在这里。我有一个ul
链接菜单。当用户从此列表中选择时,我正在使用ajax从另一个页面调用内容。我想从所选锚点中获取数据属性(data-flag
),并将该属性作为类添加到包含ajax内容(#fourteen
)的div中。添加类件工作正常。但是,当从ul
菜单中选择一个新项目时,我似乎无法从内容div中删除其他类。每次单击,它只会添加更多类。
这是我的代码。
<ul id="langtest" class="tp_lang2">
<li><a href="http://myurl.com/14-languages" data-flag="us" data-lang="English">English</a></li>
<li><a href="http://myurl.com/zh/14-languages" data-flag="cn" data-lang="Chinese (Simplified)">中文(简体)</a></li>
<li><a href="http://myurl.com/nl/14-languages" data-flag="nl" data-lang="Dutch">Nederlands</a></li>
<li><a href="http://myurl.com/fr/14-languages" data-flag="fr" data-lang="French">Français</a></li>
</ul>
<div id="fourteen" class="cn">
<div id="content">
<div class="main-content">Content being served up here.
</div>
</div>
</div>
<script>
jQuery("ul#langtest li a").click(function() {
jQuery('#fourteen').load($(this).attr("href") + " #content");
jQuery('#fourteen').removeClass.not(this).attr("data-flag");
jQuery('#fourteen').addClass($(this).attr("data-flag"));
return false;
});
</script>
答案 0 :(得分:1)
在动态添加的元素上,您必须使用delegate
event
绑定。
jQuery(document).on("click","ul#langtest li a",function() {
jQuery('#fourteen').load($(this).attr("href") + " #content");
//also change your removeClass code
jQuery('#fourteen').removeClass();
jQuery('#fourteen').addClass($(this).attr("data-flag"));
return false;
});
答案 1 :(得分:1)
您只需删除元素中的所有类,如下所示:
// remove all class
jQuery('#fourteen').removeClass();
// then add class name with data flag selected anchor only
jQuery('#fourteen').addClass($(this).attr("data-flag"));
DEMO(检查元素以查看实际添加和删除的类)
答案 2 :(得分:1)
您的removeClass
似乎并不完美。就像下面这样。
jQuery('#fourteen').removeClass();