为了清空表格单元格的内容,我发出以下命令:
$('td').empty()
但要清空输入字段的内容,我说:
$('input').val() -- Edit: .val('')
问:这不符合面向对象编程的想法吗?你是不是每个人都有相同的方法,这意味着“无论你需要做什么来清空自己,你现在已经得到了我的许可吗?”
就像,如果你有cat.speak和dog.speak以及猫喵和狗吠。
答案 0 :(得分:7)
1:jQuery 不 OOP并且从未声称是
2:$('input').val()
只返回输入的值,它不会empty
输出
3:$('td').empty()
删除html内容。它不是为了“清空”任何输入元素,而是清空你要做的输入:$('input').val('')
答案 1 :(得分:2)
令人困惑的删除HTML内容和将值设置为null。
您永远不会从输入中删除文字内容。浏览器会因为数据绑定而为您删除它。
$("input").val("")
不会清空输入。
.val("")
从输入中删除文本内容这一事实仅仅是一个副作用,即输入字段中的文本数据绑定到{的value
属性{1}}。
你的概括太多了。
答案 2 :(得分:2)
请记住,这些操作正在做两件非常不同的事情。
empty
正在从目标元素中删除HTML内容。
val
正在设置表单元素的值,至少在与参数一起使用时。
所以我认为指定了两个不同名称的函数很好。
对于它的价值,jQuery是以原型/功能风格编写的,而不是OO,但这不会改变你原来的问题。
答案 3 :(得分:1)
好吧,当你空着时,你正在清理<td>
和</td>
之间的所有内容。
当你执行.val('')时,你将输入字段的value属性设置为空。
<input type="text" value="hi"/>
两件不同的事情。
答案 4 :(得分:1)
严格地说,他们完全分开了。
.empty()
删除指定节点的所有后代。
.val()
实际上没有清空输入字段的内容,返回它们。
答案 5 :(得分:1)
你的空和val是两个不同的东西.empty从选择器中删除dom元素.val()获取输入选择器的值
答案 6 :(得分:1)
我不相信它会违反OOP,因为empty()
存在以清除给定父级的所有DOM子级。虽然val()
存在于以某种方式显示文本的控件上的设置值,如按钮,文本框等。
因此,td
可以有很多孩子,而empty()
在清除时会有意义。虽然按钮只包含文本值,但修改val()
。
我认为这里的OOP还可以。