Jquery 有条件无事件

Jquery 有条件无事件,jquery,css,Jquery,Css,如果我使用单击键,则此代码有效。。。功能。但如何让它在没有按键或点击的情况下工作。我的意思是,如何在页面加载时更改行高 (注意div的高度不同,我已经有了jQuery文档就绪函数) 在小提琴中: $(“.note”).keyup(函数(){ var noteHeight=$(this).height(); 如果(注释高度==25){ $(this.css(“行高”,“25px”); }否则{ $(this.css(“线高”、“正常”); } }); #wrap{ 保证金:0自动; 最大宽度:4

如果我使用单击键,则此代码有效。。。功能。但如何让它在没有按键或点击的情况下工作。我的意思是,如何在页面加载时更改行高

(注意div的高度不同,我已经有了jQuery文档就绪函数)

在小提琴中:

$(“.note”).keyup(函数(){
var noteHeight=$(this).height();
如果(注释高度==25){
$(this.css(“行高”,“25px”);
}否则{
$(this.css(“线高”、“正常”);
}
});
#wrap{
保证金:0自动;
最大宽度:420px;
}
.注{
宽度:100%;
最小高度:25px;线高度:25px;
边缘底部:5px;
填充:0px 10px;
文本对齐:左对齐;
大纲:无;
显示:内联块;
背景:白烟;
}

第一条线,第一条线,第一条线,第一条线,第一条线,第一条线,第一条线,第一条线,第一条线,第一条线,第一条线,第一条线,第一条线,第一条线,第一条线,第一条线,
第二线

只需将代码包装在
$(document).ready()
事件中,然后使用
.each()
函数迭代元素

这样,您的代码将在文档准备就绪并加载时运行

因为您的元素已经有
行高:25px
在CSS中,您可以根据需要进行更改:

$(document).ready(function() {
    $('.note').each(function() {
        var noteHeight = $(this).height();

        if (noteHeight > 25)
            $(this).css("line-height", "normal");
    });
});
JSFiddle:


试试看,如果有帮助就告诉我

问题是您得到的是文档的高度,而不是元素的高度。尝试使用以下代码代替您的文档侦听器:

$(document).ready(function() {

    var primer=document.getElementById("primer");
    var noteHeight = primer.clientHeight;
    //alert(noteHeight);
    // Your note height might not always be == to 75 or 25.
    // Maybe use <= or >= to work with a wider range of values.
    if (noteHeight == 75) {
            $(primer).css("line-height","100px");
        } else {    
            $(primer).css("line-height","normal");
    }

});
$(文档).ready(函数(){
var primer=document.getElementById(“primer”);
var noteHeight=底漆的厚度;
//警惕(注意高度);
//您的笔记高度可能并不总是==到75或25。
//可能使用=处理更大范围的值。
如果(注高度=75){
$(primer.css(“线高”,“100px”);
}否则{
$(primer.css(“线高”、“正常”);
}
});
这是如何为你的代码,但是,我会分开你的代码,使线高度函数是一个单独的函数称为changeLineHeight,例如。。。然后您可以通过keydown、keyup等方式触发它,也可以在doc.ready with changeLineHeight()中运行

e、 g

将代码包装在
$(document).ready()
中就可以了,因为DOM应该在操作之前完全加载

$(document).ready(function() {
 $(".note").each(function(){
   var noteHeight = $(this).height();

    if (noteHeight == 25) {
        $(this).css("line-height","25px");
    } else {    
        $(this).css("line-height","normal");
    }
  });
});

工作

这不清楚您期望的是什么,我想您可以在“我希望它将文本居中”处停止,然后您只需更改
。注意
选择器的
文本对齐:左
文本对齐:居中否则,如果这个问题还有其他问题,您确实需要澄清您的意图。好的。我简化了这个问题。请参见updateRE:“页面加载时”-
$(document).ready(函数(){//your code here})当然。但它不起作用:我认为问题在于并非所有音符的高度都相同,我没有注意到你有多个音符。查看我的更新!:)这不是重点。我使用jQuery$(function()或$(document).ready(function()),但它不起作用。请检查事件侦听器中的fiddle:jsfiddle.net/n32u4gnq/3
$(this)。height()
返回一个远大于25的数字,因此您的行高度将始终设置为正常。我认为这是因为“this”在上下文中,您的侦听器引用的是文档而不是您的元素。我更新了我的答案,它在小提琴中工作,所以请看!$(“.note”).trigger('keyup'));似乎是一个简单聪明的解决方案。但它似乎不起作用。我遗漏了什么吗?在这里,我用函数测试了第二个选项。它不起作用:@Nrc这里也是第一个修复的选项。在定义事件之前,你调用了触发器,但使用jquery你可以将它们链接起来。这是非常好的选项,工作得非常好。什么是(i,el}在函数中?@Nrc每个函数每次返回变量,i是整数,el是元素。因此,i为0,1,2,3,4,5,等等,$(elem)与$相同(此)
var changeLineHeight = function(){
    $(".notes").each(function(i,el){
        var noteHeight = $(this).height();
        if (noteHeight == 25) {
            $(this).css("line-height","25px");
        } else {    
            $(this).css("line-height","normal");
        }
    });
};
$(document).on('keyup keydown paste click', changeLineHeight)
.ready(function(){
    changeLineHeight();
});
$(document).ready(function() {
 $(".note").each(function(){
   var noteHeight = $(this).height();

    if (noteHeight == 25) {
        $(this).css("line-height","25px");
    } else {    
        $(this).css("line-height","normal");
    }
  });
});