Ich versuche, den HTML-Inhalt eines Elements mithilfe der HTML-Methode für das jquery-Objekt bedingt festzulegen. Ich bin mir nicht sicher, welcher Weg der richtige ist. Ob Sie eine if -Anweisung im HTML-Methodenaufruf oder etwas anderes verwenden möchten

Zum Beispiel versuche ich, mit jquery verschiedene Größen für ein Bild festzulegen.

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

Also habe ich versucht, es als Parameter in die HTML-Methode einzufügen

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

Um Ihnen den Kontext für den obigen Code zu geben, sieht die vollständige Struktur folgendermaßen aus:

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') {})
}

Ich bin mir nicht sicher, was ich falsch mache. Kann mir bitte jemand dabei helfen?

Vielen Dank.

2
Vignesh Pichamani 22 Nov. 2013 im 11:12

9 Antworten

Beste Antwort

Sie können keine if-Anweisung innerhalb eines Methodenaufrufs ausführen, zumindest nicht so.

Sie können eine ternäre machen, wenn, wenn Sie wirklich müssen.

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

Aber der am besten geeignete Weg besteht darin, die gesamte Logik vor dem Aufruf zu verarbeiten ...

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

Wenn Sie WIRKLICH ein if innerhalb des HTML-Aufrufs benötigen, können Sie dies als sofortige Funktion tun.

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

Aber dann machen Sie Ihren Code schwer lesbar ...

3
André Snede Kock 22 Nov. 2013 im 07:15

Für Ihr längeres Beispiel folgt dieselbe Logik wie für die anderen Antworten:

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

Es sieht so aus, als ob Sie einige Verwirrung zwischen ternär und if haben könnten - sie sind im Wesentlichen gleich, wobei das ternäre nur eine einzelne if / else-Anweisung in Kurzschreibweise ist:

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

Ist das gleiche wie

something ? thenDoThis() : doThat();

Der Unterschied besteht darin, dass if in einem Methodenaufruf nicht zulässig ist, wohingegen ternäre Anweisungen in Ordnung sind:

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

console.log(something ? thenDoThis() : doThat());
// works fine
1
phatskat 22 Nov. 2013 im 07:26

Sie haben nur eine Option. Versuchen Sie es mit ternary operator

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

Aber besser verwenden Sie die if Bedingung dafür besser als die ternary.

1
Gautam3164 22 Nov. 2013 im 07:26

Zunächst können Sie den ternären Operator verwenden:

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

Aber ich denke, der bessere Weg ist, eine Funktion aufzurufen

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

Oder um eine selbstaufrufende Funktion zu verwenden:

.html(
(function func(size){
     if(size === 1)
        return '<img src="image1.png"/>';
     return '';
})(settings.imagesize)); 
0
Community 23 Mai 2017 im 12:05

Sie können dies mit Bedingter Operator tun:

.html((settings.imagesize == '1') ? '<img src="image1.png"/>' : 'other html');
1
palaѕн 22 Nov. 2013 im 07:15

Sie müssen es so machen

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

.html(content)

BEARBEITEN

Sie können einen solchen ternären Operator verwenden, um Code zu löschen.

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

.html(content)

Dies ist viel besser lesbar als ein Inline-Aufruf der if-Bedingung in .html

1
Muhammad Raheel 22 Nov. 2013 im 07:32

Keine dumme Frage :)

So können Sie das machen. Obwohl ich solche Dinge nicht empfehlen würde. Sie können solche Manipulationen auch außerhalb durchführen.

.html( settings.imagesize=='1'? '<img src="image1.png"/>' : '' );
1
Rakesh Juyal 22 Nov. 2013 im 07:16

Kannst du das überprüfen?

.html(i=='21' ? true : false)
1
banny 22 Nov. 2013 im 12:35

Sie können die ternäre Version von if ausprobieren

.html(i=='21' ? true : false)
1
jasonscript 22 Nov. 2013 im 07:16