javascript – 如何正确使用jquery val()来匹配CSS选择器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何正确使用jquery val()来匹配CSS选择器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1961字,纯文字阅读大概需要3分钟。
内容图文
我有一个带有一些输入和附加CSS的表单,它使用属性值选择器根据值更改输入的背景颜色.
例
<!DOCTYPE html>
<html>
<head><style>
input[value="foo"] { background-color: red; }
</style></head>
<body>
<form>
<input value="foo" />
<button/>
</form>
</body>
</html>
如果我在加载时使用foo作为值,就像在代码中一样,加载时字段将为红色,但如果我更改它,它将保持红色.同样的事情,如果我将输入的值更改为foo,它将不会更改背景颜色.
类似地,如果我在jQuery中使用.val().显然,在这些情况下,“动态”值会发生变化,而CSS则指的是“静态”值.
$('button').on('click', function(ev) {
ev.preventDefault();
$('input[value="foo"]').val('bar');
// $('input[value="bar"]').val('baz'); // nothing is found
});
我希望这段代码可以将字段从foo更改为bar,然后将bar更改为baz,但是在第二个选择器中找不到该字段.
如果我使用attr方法,事情似乎有效,但在jQuery文档中(以及SO上的许多答案),val是要走的路.
为什么会这样,为什么我要使用val()呢?
解决方法:
“Why is it so…”
这是一个属性选择器,更新.value属性时属性不会更改,因此您需要显式更改属性.
$('button').on('click', function(ev) {
ev.preventDefault();
$('input[value="foo"]').val('bar').attr("value", "bar");
$('input[value="bar"]').val('baz');
});
input[value="foo"] {
background-color: red;
}
input[value="bar"] {
background-color: yellow;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<form>
<input value="foo" />
<button/>
</form>
但是,当用户更改值时,除非您连接.on(“input”…处理程序以保持属性与属性同步),否则这不起作用.
$("input").on("input", function() {
this.setAttribute("value", this.value);
});
input[value="foo"] {
background-color: red;
}
input[value="bar"] {
background-color: yellow;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<form>
Change the value to "bar"
<input value="foo" />
</form>
“…and why shall I use
val()
at all?”
只需通过属性保留原始值即可获取和设置值.
要求它们同步并不是那么常见.按值选择DOM有点像文本内容的DOM选择.它不是经常需要的,有时候有更好的方法来解决问题.
内容总结
以上是互联网集市为您收集整理的javascript – 如何正确使用jquery val()来匹配CSS选择器全部内容,希望文章能够帮你解决javascript – 如何正确使用jquery val()来匹配CSS选择器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。