Javascript jQuery不是';我不在Wordpress工作

Javascript jQuery不是';我不在Wordpress工作,javascript,php,jquery,css,wordpress,Javascript,Php,Jquery,Css,Wordpress,我在js/custom.js中创建了一个函数。 基本上,它通过添加一类articleAllign,为我在wordpress中对齐帖子,这将插入内容,在文章标题和下面的摘录之间创建更大的间隙,这仅在文章标题不超过一行时才有必要,因为对于占用两行的标题,它将把文章的摘录往下推。我希望在一行的文章标题和下面的摘录之间有一个更大的差距,这样摘录的顶部就都对齐了 CSS jQuery (function($) { function articleAlign() { titleLength =

我在
js/custom.js
中创建了一个函数。 基本上,它通过添加一类
articleAllign
,为我在wordpress中对齐帖子,这将插入内容,在文章标题和下面的摘录之间创建更大的间隙,这仅在文章标题不超过一行时才有必要,因为对于占用两行的标题,它将把文章的摘录往下推。我希望在一行的文章标题和下面的摘录之间有一个更大的差距,这样摘录的顶部就都对齐了

CSS

jQuery

(function($) {
  function articleAlign() {
    titleLength = $('.entry-title').children('a').text().length;
    if(titleLength < 44) {
    $('.entry-title').addClass('articleAlign');
    }
  }
  articleAlign();
})(jQuery);
请注意,我正在为
$in\u footer
传递
true
,因此脚本正好位于
标记之前。(所有内容都在原始版本的一行中,位于
js/functions.js
队列正下方的Wordpress
functions.php
中)


为什么没有添加我的类?

jQuery的
文本是一个奇怪的鸭子:与jQuery的所有其他getter不同,它只返回集合中第一个条目的相关值,它返回集合中所有条目的串联字符串。所以一个可能的问题是有不止一个
.entry title
,而且您得到的文本比您预期的要多

查看一个随机的Wordpress站点,我发现有两个
.entry title
元素,而不仅仅是一个,而且每个元素都包含标题。因此,在这种情况下,
$(“.entry title”).children(“a”).text()
将返回一个包含两个标题副本的字符串

如果你的情况就是这样,你可以使用or来获得第一个。还请注意,
$(“.entry title”).children(“a”)
是简单编写的
$(“.entry title>a”)
。因此:

if ($(".entry-title > a").eq(0).text().length < 44) {
if($(“.entry title>a”).eq(0.text().length<44){

在您询问的评论中:

我应该为每一篇文章循环我的函数吗

如果您希望将此应用于其中的每一个,则是:

(function($) {
    $(".entry-title").each(function() {
        var $this = $(this);
        if ($this.children("a").first().text().length < 44) {
            $this.addClass("articleAlign");
        }
    });
})(jQuery);
(函数($){
$(“.entry title”)。每个(函数(){
var$this=$(this);
if($this.children(“a”).first().text().length<44){
$this.addClass(“articleAlign”);
}
});
})(jQuery);

使用浏览器中内置的调试器在调用
articleAlign
时设置断点,然后按权限逐步检查代码中发生的情况——它是否找到元素、是否得到您期望的文本、文本的长度等。调试是无可替代的。@T.J.Crowder非常感谢您!旁注:你的代码正在沦为牺牲品(披露:这是我贫血小博客上的一篇文章)。您需要声明
titleLength
。jQuery的
text
是一个奇怪的鸭子:与jQuery的所有其他getter不同,它只返回集合中第一个条目的相关值,它为集合中的所有条目返回一个文本的串联字符串。因此,一个可能的问题是,存在多个
。entry title。条目标题
元素,每个元素都有标题,而不是一个。也许就是这样。(但该网站的
。条目标题
元素中没有任何
a
,显然是不同的设计…)所以在我的函数articleAlign之前,我只需要声明titleLength;就像那样?你真是太棒了!从你那里学到了一些新东西,非常感谢。顺便说一下,我在另一个文件中有另一个同名函数,但我忘了带出来。但我很高兴你能帮助我。我使用了我创建的函数,但我将包括“>a”语法。谢谢!
if ($(".entry-title > a").eq(0).text().length < 44) {
(function($) {
    $(".entry-title").each(function() {
        var $this = $(this);
        if ($this.children("a").first().text().length < 44) {
            $this.addClass("articleAlign");
        }
    });
})(jQuery);