2013-11-22 23 views
2

我試圖有條件地設置元素的html內容,使用jQuery對象上的html方法。 我不確定哪個是正確的做法。無論在html方法調用中使用if語句,還是其他內容如果在jQuery中的條件

例如,我試圖在使用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') {}) 
} 

我不知道我在做什麼錯,有人可以幫我嗎?

謝謝。

回答

3

您不能在方法調用中執行if語句,而不是像atleast那樣。

如果你真的必須,你可以做一個三元組。

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

最恰當的方式是調用之前處理所有的邏輯...

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

如果你真的需要的如果HTML調用內部,您可以將其作爲即時功能來執行。

.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

1

你可以做到這一點更可讀的,而不是如果條件內嵌調用使用Conditional Operator

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

不是一個愚蠢的問題:)

這是你如何做到這一點。雖然我不會推薦做這樣的事情。 你可以在外面做這樣的操作。

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

您可以嘗試的if

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

三元版本你只有一個option.Try與ternary operator

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

不過還好你使用if條件比這更好的ternary

+0

是否可以使用;如果HTML方法內部條件? –

+0

@用戶不,它會導致語法錯誤(我相信) – phatskat

+1

對不起,我認爲它會工作,但didnt.I已刪除 – Gautam3164

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); 
} 

它看起來像你周圍可有三元一些混亂VS如果 - 他們本質上與三元只是做了相同單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 
1

ü可以檢查此

.html(i=='21' ? true : false) 
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));