【问题标题】:JQuery to add <body> class, need a little more helpJQuery 添加 <body> 类,需要更多帮助
【发布时间】:2011-11-09 20:50:36
【问题描述】:

我有这段代码来解析 URL 并向我的 HTML 页面的 &lt;body&gt;tag 添加一个类。

var pathname = window.location.pathname;
var pathSlashesReplaced = pathname.replace(/\//g, " ");
var pathSlashesReplacedNoFirstDash = pathSlashesReplaced.replace(" ","");
var newClass = pathSlashesReplacedNoFirstDash.replace(/(\.[\s\S]+)/ig, "");

$("body").attr("class",newClass);
if ( $("body").attr("class") == "")
{
$("body").addClass("class");
}

我遇到的问题是它删除了已经存在的身体类。相反,我想附加到任何存在的主体类而不是覆盖。

【问题讨论】:

  • $('body').addClass(newClass) 或 $('body')[0].className += ' '+newClass 有什么问题?

标签: javascript jquery theming


【解决方案1】:

使用这个:

$("body").addClass(newClass);

而不是

$("body").attr("class",newClass);

这是一个 setter:$("body").attr("class",newClass); 将类设置为 newClass 并且不附加它。

【讨论】:

    【解决方案2】:

    使用addClass 而不是attr('class', newClass)。 addClass 还接受以空格分隔的类名列表,并正确添加它们。

    $("body").addClass(newClass);
    if ( $("body").attr("class") == "") // Makes no sense, since you have previously 
    {                                   // added `newClass`
        $("body").addClass("class");
    }
    

    有关addClass 的文档,请参阅http://api.jquery.com/addClass/

    【讨论】:

      【解决方案3】:

      .attr("class", newClass) 正在删除所有现有类。您应该改用.addClass():

      $("body").addClass(newClass);
      

      另外,由于你刚刚给body添加了一个类,下面的代码永远是假的:

      if ( $("body").attr("class") == "") { }
      

      【讨论】:

        【解决方案4】:

        改用 addClass 函数 - http://api.jquery.com/addClass/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-07-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-03-23
          • 1970-01-01
          相关资源
          最近更新 更多