目前我有一个带有向下指向图标的标题。如果单击标题,我希望图像更改为向上标题。
我试过用“?”运算符查询是否,但我不是100%确定它是如何工作的。我现在正在使用此代码。
// Toggle message_body
$(".message_head").click(function(){
var id = $(this).attr("id");
$(this).next(".message_body").slideToggle(500);
$(".icon[id=" + id + "]").attr("src", "../images/admin/Symbol_Down.png" ? : "../images/admin/Symbol_Up.png");
return false;
});
我知道这段代码不起作用。有人可以告诉我怎么样?谢谢!
答案 0 :(得分:3)
这样就可以了。请注意,您需要在terenary运算符中进行比较。如果您只是"something" ? "blah" : "result
,它将永远为真,因为非空值始终为真。
var up = "../images/admin/Symbol_Up.png";
var down = "../images/admin/Symbol_Down.png";
$(".message_head").click(function(){
var icon = $(".icon[id=" + $(this).attr("id") + "]");
$(this).next(".message_body").slideToggle(500);
icon.attr("src", this.attr("src") == up ? down : up);
});
如果您的JavaScript css选择器准确无误,我刚刚意识到HTML的一个基本问题。您要求.icon [id = x]并使用.message_head类中的ID属性来查找图标的ID。为此,您必须为两者都使用相同的ID,这是无效的HTML。我想象你的HTML看起来是这样的:
<div class="message_head" id="1">
<img class="icon" src="up.jpg" id="1"/>
</div>
这是一个nono。你能做的是:
<div class="message_head" id="1">
<img class="icon" src="up.jpg" />
</div>
var up = "../images/admin/Symbol_Up.png";
var down = "../images/admin/Symbol_Down.png";
$(".message_head").click(function(){
var icon = $('.icon', this);
$(this).next(".message_body").slideToggle(500);
icon.attr("src", this.attr("src") == up ? down : up);
});
答案 1 :(得分:0)
你没有在条件中使用任何东西。
$(".message_head").click(function(){
var id = $(this).attr("id");
var myBody = $(this).next(".message_body").slideToggle(500);
$(".icon[id=" + id + "]").attr("src", (myBody.css("display") == "none") ? "../images/admin/Symbol_Down.png" : "../images/admin/Symbol_Up.png");
return false;
});
请注意,如果这会产生向后行为(即向上而不是向下),则应将"none"
更改为"block"
。
答案 2 :(得分:-1)
$(".message_head").click(function(){
this.next(".message_body").slideToggle(500);
this.attr("src", this.attr('src') == "../images/admin/Symbol_Down.png" ? "../images/admin/Symbol_Up.png" : "../images/admin/Symbol_Down.png");
return false;
});
关于?:(三元运算符)的更多信息。这样:
var A = B ? C : D;
完全相同:
if (B) {
var A = C
} else {
var A = D;
}