addClass/removeClass 基于所选项目数据属性

addClass/removeClass based on selected items data attribute

本文关键字:项目 数据属性 于所选 removeClass addClass      更新时间:2023-09-26

我有点卡在这里。我有一个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>

你只需要像这样删除元素中的所有类:

// remove all class
jQuery('#fourteen').removeClass();
// then add class name with data flag selected anchor only
jQuery('#fourteen').addClass($(this).attr("data-flag"));

DEMO检查元素以查看实际添加和删除的类

你的removeClass似乎并不完美。像下面这样做。

jQuery('#fourteen').removeClass();

在动态添加的元素上,您必须使用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;
    });