修改元素属性后,Jquery 选择器不起作用
Jquery selector not working after element attribute is modified
我有一个文本输入和一个按钮输入。如果我单击文本输入,并且它不是只读的,则会显示警报"只读错误",否则显示"只读真"。按钮输入使文本输入只读,但当我单击文本输入时,"只读错误"仍然继续显示。看起来 Jquery 在通过脚本添加只读属性后无法识别选择器。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sin título</title>
<script type="text/javascript" src="jquery/jQuery v1.10.2.js"></script>
<script>
$(document).ready(function() {
$('.makeReadonly').on('click', function() {
$('.foo').prop('readonly', true);
});
$('input.foo:not([readonly])').on('click', function() {
alert('Readonly false');
});
$('input.foo[readonly]').on('click', function() {
alert('Readonly true');
});
});
</script>
</head>
<body>
<input type="button" value="makeReadonly" class="makeReadonly">
<input type="text" class="foo">
</body>
</html>
我可以使用纯粹的选择器触发正确的警报,或者我需要使用 if 语句(if ($('.foo').prop('readonly')) {alert('Readonly true')})进行验证评估属性?
对我来说,这似乎是一个 Jquery 错误,但我想用纯粹的选择器来处理它。但是,如果不可能,我很高兴有人可以解释我为什么。
谢谢
代码在查询执行时查找适合特定选择器的元素,并将事件处理程序绑定到这些元素。如果要将处理程序绑定到在事件发生时适合选择器的元素,请使用事件委派:
$(document).on('click', 'input.foo:not([readonly])', function () {
// ...
});
使用以下命令:
$('input.foo').on('click',function(){
if($(this).is('[readonly]')) alert('Readonly true');
else alert('Readonly false');
});
使用旧代码,click
事件被绑定到元素,其readonly
依赖于其初始值。这样,readonly
的值就会在每个click
上检查。
在您的情况下,JQuery 会在文档加载/准备就绪后将事件处理程序添加到选定的 DOM-Element 中。它找不到属性为"只读"的元素,因此不会添加任何事件处理程序。
若要绕过此操作,必须使用全局标识符将事件处理程序添加到已更改的元素中。你已经在这个方向上提出了一些建议。
尝试这样的事情:
<script>
$(document).ready(function() {
$('.makeReadonly').on('click', function() {
$('.foo').prop('readonly', true);
});
$('input.foo').on('click', function() {
if ($(this).prop('readonly'))
{
alert('Readonly true');
} else
{
alert('Readonly false');
}
});
});
</script>
相关文章:
- jQuery选择器无法正常工作
- 将jquery选择器转换为数组
- JavaScriptDOM正常工作时JQuery选择器不工作
- 在我的情况下,使用带有变量失败的 jquery 选择器
- 换行符插入jquery选择器
- 使用javascript"这个“;用于jquery选择器
- jQuery选择器缓存问题
- jQuery 选择器,所有跨度都在 DIV 内
- JQuery选择器:如果同级具有.class,则选择td
- jQuery选择器不识别任何动态创建的HTML输入函数
- 循环遍历元素jquery选择器
- jQuery选择器错误:无法识别的表达式
- 自定义jquery选择器属性未在模拟器中激发
- Jquery选择器为空,我应该使用哪个作用域
- jQuery选择器就是用这个构建的
- jQuery 选择器混淆
- 将jQuery选择器与“this”相结合
- jQuery选择器在脚本中不起作用,但在控制台中工作
- jQuery 选择器中的简单 jQuery 语法和串联
- 全局 JQuery 选择器缓存以提高性能