这是我的页面代码:
<span title='1' class="showpanel">点击查看</span>
<span title='2' class="showpanel">点击查看</span>
<span title='3' class="showpanel">点击查看</span>
<div id="panel" style="display:none;"></div>
<script>
$(document).ready(function() {
$(".showpanel").click(function(){
if($("#panel").is(":hidden")){
$(this).html("点击关闭");
innerobj=$.ajax({url:"MyServlet"+"?itemId="+$(this).attr("title"),async:false});
$("#panel").html("<section id='dg-container' class='dg-container'>"
+"<div class='dg-wrapper'>"
+innerobj.responseText
+"</div>"
+"<nav><span class='dg-prev'><</span><span class='dg-next'>></span></nav>"
+"</section>"
+"<script>");
$("#panel").show();
console.log($(this).attr("title"));
}
if($("#panel").is(":visible")){
$("#panel").hide();
$(this).html("点击查看");
}
});
});
</script>
我点击“点击查看”后,“点击查看”并没有改变成“点击关闭”,但是调用console.log($(this).html())在浏览器调试时是能输出正确的啊,id为panel的元素也没有在页面中显示出来。。。这咋回事啊。。。各位大侠帮帮忙
你逻辑上出了错误。
刚开始 if($("#panel").is(":hidden"))
这个条件成立,所以会运行以下语句:
$(this).html("点击关闭");
$("#panel").show();
此时当程序到达 if($("#panel").is(":visible"))
时,条件也成立,因为你已经修改了属性。所以
$("#panel").hide();
$(this).html("点击查看");
也会运行。所以最后的结果相当啥也没干。
请将结构改为
if() {
...
}
else if() {
...
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。