面向对象编程问题

时间:2011-05-10 19:11:09

标签: jquery

为了清空表格单元格的内容,我发出以下命令:

$('td').empty()

但要清空输入字段的内容,我说:

$('input').val() -- Edit: .val('')
问:这不符合面向对象编程的想法吗?你是不是每个人都有相同的方法,这意味着“无论你需要做什么来清空自己,你现在已经得到了我的许可吗?”

就像,如果你有cat.speak和dog.speak以及猫喵和狗吠。

7 个答案:

答案 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还可以。