开发者社区> 问答> 正文

jquery无法改变页面内容,调用console.log($(this).html())方法显示已经改变了

这是我的页面代码:

<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'>&lt;</span><span class='dg-next'>&gt;</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的元素也没有在页面中显示出来。。。这咋回事啊。。。各位大侠帮帮忙

展开
收起
小旋风柴进 2016-03-24 13:45:27 2565 0
1 条回答
写回答
取消 提交回答
  • 你逻辑上出了错误。
    刚开始 if($("#panel").is(":hidden")) 这个条件成立,所以会运行以下语句:

    $(this).html("点击关闭");
    $("#panel").show();

    此时当程序到达 if($("#panel").is(":visible")) 时,条件也成立,因为你已经修改了属性。所以

    $("#panel").hide();
    $(this).html("点击查看");

    也会运行。所以最后的结果相当啥也没干。
    请将结构改为

    if() {
     ...
    } 
    else if() {
     ...
    }
    2019-07-17 19:12:40
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《零基础HTML入门教程》 立即下载
天猫 HTML5 互动技术实践 立即下载
天猫HTML5互动技术实践 立即下载