Оператор 'If' - 'else' внутри функции jQuery - PullRequest
1 голос
/ 22 марта 2010

У меня есть следующий код в JavaScript и jQuery:

     $("<li />")

     .html('Some HTML')

Я бы хотел изменить содержание .html, используя оператор if - else. Мой код должен быть примерно таким, но он не работает.

var showinfo = <?php echo '$action'; ?>

$("<li />")

if (showinfo == 'action1'){
    .html('Some HTML')
else {
    .html('Other HTML')
}

Как мне это изменить?

Ответы [ 5 ]

6 голосов
/ 22 марта 2010

Тернарный оператор?

$("<li />").html((showinfo == 'action1') ? 'Somehtml' : 'Other html');

Важно понимать, что ваш первый бит кода интерпретируется как одно утверждение, а не два:

 $("<li />")
 .html('Somehtml')

 //Is the same as:
 $("<li />").html('Somehtml');

Вы запутались, потому что не используете точки с запятой для завершения своих утверждений. JavaScript позволяет поддерживать устаревший код, но если вы пишете код сейчас, вам действительно следует использовать его.

3 голосов
/ 22 марта 2010

Не прерывайте цепочку jquery:

var showinfo = '<?php echo $action; ?>'

if (showinfo == 'action1'){
    $("<li />").html('Somehtml')     
} else {
    $("<li />").html('Other html')
}

Примечание: я также исправил ошибку в вашем выражении php echo и пропущенную скобку в вашем if...else

2 голосов
/ 22 марта 2010
var listItem = $("#yourLi");

if (showinfo == 'action1'){
 listItem.html('Somehtml')     
else {
  listItem.html('Other html')
  }
1 голос
/ 22 марта 2010

Ответ Адама довольно точный. Чтобы сохранить немного ненужного дублирования, вы можете немного изменить его так:

var
    showinfo = '<?php echo $action; ?>',
    listitems = $("<li />");

if (showinfo == 'action1') {
    listitems.html('Somehtml');     
} else {
    listitems.html('Other html');
}
1 голос
/ 22 марта 2010

Вы можете сократить его следующим образом:

var showinfo = '<?php echo '$action'; ?>'


$("<li />")
.html( (showinfo == 'action1' ? 'Somehtml' : 'Other html') );

.html может находиться в той же строке или в отдельной строке, поскольку оператор завершается точкой с запятой. Если у вас есть несколько методов для одного селектора, я считаю разделение их на несколько строк более читабельным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...