我有以下HTML结构:
<div class='message_top' id='top_7' style='cursor:pointer;'>
<div class='top_ime'>From: official</div>
<div class='top_status' id='status_7'>
<img src='images/message_new.png' height='26' title='New message' />
</div>
</div>
除此之外,还有很多其他相同结构的DIV,但ID号不同,例如:
<div class='message_top' id='top_15' style='cursor:pointer;'>
<div class='top_ime'>From: official</div>
<div class='top_status' id='status_15'>
<img src='images/message_new.png' height='26' title='New message' />
</div>
</div>
现在,我有一个jQuery函数,它接受.message_top
div的ID,它应该使用属于它的.top_status
div的内容执行一个动作。但是,出于某种原因,在语法中它似乎不能识别.top_status
div的ID。我知道我不能很好地解释这一点,但这里有一个小提琴,可以帮助你理解(代码和评论都在那里):
$(function () {
$('.message_top').click(function(){
var id = this.id;
status_id = id.replace("top","status");
status = $("#"+status_id).html();
alert(status_id+" "+status); //status variable is empty, but...
status2 = $("#status_7").html();
alert(status2); //status2 has the expected value
});
});
所以,正如你所看到的,如果我使用.html()
调用$("#status_7").html();
方法,它可以正常工作,但如果我用$("#"+status_id).html();
调用它(status_id为“status_7”)它就不会不行。这里发生了什么事?我已经多次使用类似的代码,从来没有遇到任何问题。
答案 0 :(得分:6)
使用本地变量而不是全局变量。 window.status
是预定义的,可能只读。