我有以下代码。它应该是自我记录的。
$('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/