2

我有这段代码用于在我的 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>');
            });
        });

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

没关系,但是我只需要添加一次,因此当用户在跨度上单击更多次时,它不会添加更多文本。

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

但是,如果他单击另一个跨度,它可以删除 div 内的 html。例如,如果 span.log 处于活动状态,则单击 span.log 后没有任何反应,但如果他单击 span.reg,则 div.login-part 中的 html 将被删除,并且将显示注册文本。

如何做这样的事情?

4

1 回答 1

2

尝试 APi:.one请 :(阅读您的问题,您似乎只需要像login使用一次一样附加 HTML 即可.one解决此问题)

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

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>');
            });
于 2012-07-01T08:49:09.253 回答