我在JavaScript和jQuery中有以下代码:
$("<li />")
.html('Some HTML')
我希望能够使用if
- else
语句更改.html的内容。我的代码应该是这样的,但它不起作用。
var showinfo = <?php echo '$action'; ?>
$("<li />")
if (showinfo == 'action1'){
.html('Some HTML')
else {
.html('Other HTML')
}
我应该如何改变它?
答案 0 :(得分:6)
三元运营商?
$("<li />").html((showinfo == 'action1') ? 'Somehtml' : 'Other html');
要理解的重要一点是,您的第一部分代码被解释为一个语句,而不是两个:
$("<li />")
.html('Somehtml')
//Is the same as:
$("<li />").html('Somehtml');
由于你没有使用分号来终止你的陈述,你会变得混乱。 JavaScript允许它支持遗留代码,但是如果你现在编写代码,你真的应该使用它们。
答案 1 :(得分:3)
不要打断jquery链接:
var showinfo = '<?php echo $action; ?>'
if (showinfo == 'action1'){
$("<li />").html('Somehtml')
} else {
$("<li />").html('Other html')
}
注意:我还更正了您的echo
语句中的错误以及if...else
中缺少的括号
答案 2 :(得分:2)
var listItem = $("#yourLi");
if (showinfo == 'action1'){
listItem.html('Somehtml')
else {
listItem.html('Other html')
}
答案 3 :(得分:1)
您可以按如下方式缩短它:
var showinfo = '<?php echo '$action'; ?>'
$("<li />")
.html( (showinfo == 'action1' ? 'Somehtml' : 'Other html') );
.html可以在同一行或单独一行,因为语句以分号结束。如果你在一个选择器上有多个方法,我发现在多行上分离它们更具可读性。
答案 4 :(得分:1)
Adam's answer非常适合。为了节省一些不必要的重复,你可以稍微修改它:
var
showinfo = '<?php echo $action; ?>',
listitems = $("<li />");
if (showinfo == 'action1') {
listitems.html('Somehtml');
} else {
listitems.html('Other html');
}