如果在jQuery中div为空,如何追加html?

时间:2012-07-01 08:47:33

标签: jquery

我有这个代码用于在我的PHP文件中显示登录和注册的内容:

<?php // LOGIN PART ?>
<div class="login-part"></div>

<?php // REGISTRATION PART ?>
<div class="registration-part"></div>

这在我的js文件中:

$(document).ready( function() {
            // FOR REGISTRATION
            $('span.logreg.reg').click(function () {

                $('div.registration-part').append('<p>Registration</p>');
            });

            // FOR LOGIN
            $('span.logreg.log').click(function () {

                // insert html
                $('div.login-part').append('<p>Login</p>');
            });
        });

现在,每次我点击一个跨度,它会显示文本登录或注册,根据单击的跨度。

多数民众赞成,但是我只需要添加一次,所以当用户在跨度上点击更多次时,它将不会添加更多文本。

删除()或空()不是一个选项,据我所知,因为我需要输入框内的信息(稍后会有输入框用于插入用户信息)留在那里而不是删除如果用户意外再次点击跨度。

但是,如果他点击另一个范围,它可以删除div中的html。例如。如果span.log处于活动状态,单击span.log后就不会发生任何事情,但是如果他点击span.reg,div.login-part中的html将被删除并显示注册文本。

如何做这样的事情?

1 个答案:

答案 0 :(得分:2)

请尝试APi:.one :(阅读您的问题,似乎您只需要使用login添加.one之后的HTML就可以解决此问题。

  

将处理程序附加到元素的事件。处理程序已执行   每个元素最多一次。

APi链接:http://api.jquery.com/one/

这种方式只会根据需要添加一次,并且您不会多次重复显示html。

希望这有帮助,请知道我是否遗漏了任何东西,

进一步位差异演示:http://jsfiddle.net/avSDa/9/使用适合您的.is(:empty)

代码就像这样

  $('span.logreg.log').one('click', function () {

                // insert html
                $('div.registration-part').append('<p>Login</p>');
            });