如果条件在jquery

时间:2013-11-22 07:13:00

标签: javascript jquery html

我正在尝试使用jquery对象上的html方法有条件地设置元素的html内容。 我不确定哪种方法是正确的。另外在html方法调用中使用if语句或其他东西

例如,我尝试使用jquery在图像上设置不同的大小。

if(settings.imagesize =='1') {
// do something 
 }

所以我试着把它作为参数放在html方法中

.html(if(settings.imagesize=='1') { '<img src="image1.png"/>' })

为了给出上述代码的上下文,这里是完整结构的样子:

for (var i = 1; i <= 25; i++) {
    var clone = drop.clone()
        .appendTo('body')
        .css(direction, Math.random() * jQuery(window).width() - 20)
        .css('top', snowTop)
        .html(
    if (i == '21') {})
}

我不确定我做错了什么,有人可以帮我吗?

感谢。

9 个答案:

答案 0 :(得分:3)

你不能在方法调用中执行if语句,而不是像至少那样。

如果你真的必须,你可以做三元。

.html(settings.imagesize=='1' ? '<img src="image1.png"/>' : '');

但是最合适的方式是在调用之前处理所有逻辑......

var content;
if(settings.imagesize=='1') 
{ 
    content = '<img src="image1.png"/>';
}
something.html(content);

如果真的在html调用中需要if,则可以将其作为即时函数。

.html((function(){
    if(settings.imagesize=='1'){
        return '<img src="image1.png"/>';
    }
    else{
        return '';
    }
})());

但是,您的代码难以阅读......

答案 1 :(得分:1)

你需要这样做

var content = ''
if(settings.imagesize =='1') {
    content = '<img src="image1.png"/>'
}

.html(content)

修改

您可以使用这样的三元运算符来获得清晰的代码。

var content = (settings.imagesize =='1') ? '<img src="image1.png"/>' : ''

.html(content)

这更具可读性,而不是在.html

中内联调用if条件

答案 2 :(得分:1)

您可以使用Conditional Operator执行此操作:

.html((settings.imagesize == '1') ? '<img src="image1.png"/>' : 'other html');

答案 3 :(得分:1)

不是一个愚蠢的问题:)

这是你如何做到这一点的。虽然我不建议做这样的事情。 您可以在外面进行此类操作。

.html( settings.imagesize=='1'? '<img src="image1.png"/>' : '' );

答案 4 :(得分:1)

您可以尝试if

的三元版本
.html(i=='21' ? true : false)

答案 5 :(得分:1)

您只有一个选项。请尝试使用ternary operator

.html((settings.imagesize=='1') ? '<img src="image1.png"/>' : '' )

但最好使用if条件,而不是ternary

答案 6 :(得分:1)

对于较长的例子,其他答案的逻辑如下:

for (var i = 1; i <= 25; i++) {
    var content = '';

    if(i == 21)
        content = 'something';

    var clone = drop.clone()
        .appendTo('body')
        .css(direction, Math.random() * jQuery(window).width() - 20)
        .css('top', snowTop)
        .html(content);
}

看起来你可能会在三元组之间产生一些混淆,如果 - 它们与三元组基本相同,只是用简写符号表示if / else语句:

if(something)
    thenDoThis();
else
    doThat();

相同
something ? thenDoThis() : doThat();

这里的区别是在方法调用中不允许if,而三元语句很好:

console.log(if(something){ thenDoThis(); });
// SyntaxError: Unexpected token if

console.log(something ? thenDoThis() : doThat());
// works fine

答案 7 :(得分:1)

可以查看

.html(i=='21' ? true : false)

答案 8 :(得分:0)

首先,您可以使用ternary operator

.html((settings.imagesize=='1') ?'<img src="image1.png"/>' : '' )

但我认为更好的方法是调用函数

.html(func(settings.imagesize));
function func(size){
     if(size === 1)
        return '<img src="image1.png"/>';
     return '';
} 

或使用自我调用功能

.html(
(function func(size){
     if(size === 1)
        return '<img src="image1.png"/>';
     return '';
})(settings.imagesize));