我有以下代码。它应该是自我记录的。

        $('body:not(#name)').click(function () {
            if (document.getElementById('name').value === '') {
                document.getElementById('name').value = 'Anonymous';
            }
        });


否定器将被忽略。我做错了什么?



编辑:我尝试了所有建议的解决方案,但没有运气。可能是因为#name是输入文本字段?上下文中的代码,以及我上次使用.not()的痕迹:

 <form action="process-comment.php" method="POST"> <br/>
        Name: <input type"text" id="name" name="name" value="Anonymous"> <br/>
        E-mail: <input type"text" id="email" name="email" value="Secret"> <br/>
        Comment: <input type"textarea" id="comment" name="comment"> <br/>
        <input id="submitbutton" type="submit" value="Send">
    </form>

    <script>
        $(document).ready(function () {


            $('#name').click(function () {
                if (document.getElementById('name').value === 'Anonymous') {
                    document.getElementById('name').value = '';
                }
            });

            $('#email').click(function () {
                if (document.getElementById('email').value === 'Secret') {
                    document.getElementById('email').value = '';
                }
            });

            $('body').not('#name').click(function () {
                if (document.getElementById('name').value === '') {
                    document.getElementById('name').value = 'Anonymous';
                }
            });

            $('body').not('#email').click(function () {
                if (document.getElementById('email').value === '') {
                    document.getElementById('email').value = 'Secret';
                }
            });


我希望文本区域在单击之前显示“匿名”和“秘密”。当用户单击其他位置时,值是“”,表示未输入任何内容,我希望返回“匿名”和“秘密”。目前,这些字段为空,但单击后立即填充。

最佳答案

您的选择器有误,应为:

 $('body :not(#name)')


或更好:

$('body').find(':not(#name)')

关于jquery - 否定器伪类不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21268041/

10-09 15:36