7

我有这个例子

当我单击时,通过 Ajax 加载动态内容。在加载的页面中有一个链接,可以关闭 div。它可以工作,但是当 div 关闭时(使用 hide()),单击链接不会重新打开加载的页面。

为什么?如何创建一个按钮,显示/隐藏加载了 Ajax 的 div?

调用页面:

<script type="text/javascript">
function getAjax(divdett,pageload) {
$(function(){$(divdett).load(pageload);});}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>click</title>
</head>
<body>
<a href="javascript:getAjax('#siteloader','jquery_divajax.htm');">click</a>
<div id="siteloader"></div>
</body>

包含页面:

<script type="text/javascript">
function delAjax(divdett) {
$(divdett).hide();
}
</script>
OK!
<a id="#chiudi" href="#" onclick="delAjax('#siteloader');">chiudi</a>
4

4 回答 4

1

我认为它不起作用,因为 HTML DOM 已经加载。对于动态绑定,您需要使用函数.bind().live()bind() 的文档)。

例如:

$( "#foo" ).bind( "click", function() {
  $( this ).hide(); // or show();
});
于 2014-02-17T08:07:22.747 回答
1

在您的“关闭”按钮中,您调用hide().

将您的功能更改getAjax为:

function getAjax(divdett,pageload) {
$(function(){$(divdett).load(pageload).show();});}

我刚刚添加.show()以确保 div 是可见的,即使它之前已被隐藏。

请注意,我尊重原始构造,但这太复杂了:$(function当您可以简单地做时无需调用

function getAjax(divdett,pageload) {
$(divdett).load(pageload).show();}

如果您只想有一个按钮,您可以删除第二个文件中的一个并将 getAjax 函数更改为

function getAjax(divdett,pageload) {
     var div = $(divdett);
     if (div.is(':visible')) div.hide();
     else div.load(pageload).show();
}
于 2012-09-23T18:49:01.803 回答
0

好吧,我的回答可能会对您有所帮助...为您提供场景...

您可以使用 if else 来响应 ajax 请求

$.ajax(
            {
                url:"ChkLogin.php",
                type:"POST",
                dataType: 'json',
                data: {usernm: unm, passwrd: pass },
                success:function(myoutput)
                {                   
                    $(":hidden").val(myoutput.srno);
                    if(myoutput.flag=="1")
                    {                                       
                        window.location="chat.php";
                    }
                    else
                    {
                        $("#msg").html("Invalid Login");
                    }
                }

            });

是 1 中的响应,然后执行此操作,否则执行此操作

喜欢....

if(myoutput.flag=="1")
                    {                                       
                        $("#div").hide(4000);
                    }
                    else
                    {
                        $("#div").show(4000);
                    }

这里 4000 是隐藏或显示 DIV 所需的毫秒(毫秒)] 希望这会对您有所帮助

于 2014-02-17T06:12:01.623 回答
0

我会使用一种不显眼的方法,将 html 与 javascript (jQuery) 代码分开,就像@dystroy 很好指出的那样,只需在发出 ajax 请求之前显示 div 以确保它是可见的:

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>click</title>

    <script type="text/javascript">
        $(function() {
            $('#clickme').on('click', function(event) {
                $('#siteloader').show().load('jquery_divajax.htm');
                event.preventDefault();
            });

            $('#siteloader').on('click', '#chiudi', function(event) {
                $('#siteloader').hide();
                event.preventDefault();
            });
        });
    </script>
</head>

<body>
    <a id="clickme" href="">click</a>
    <div id="siteloader"></div>
</body>
于 2012-09-23T19:07:06.070 回答