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
队列正下方的Wordpressfunctions.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);