【发布时间】:2010-10-11 22:00:35
【问题描述】:
我刚刚开始研究 JQuery。目前我的 Web 应用程序中没有任何 AJAX。
我的 HTML 中现有的 JavaScript 如下所示:
<form ...>
<p>Find what? <input ...></p>
<div class="ButtonArray">
<a href="AddRecord.ASP&Action=ADD">ADD</a>
<a href="#" onClick="return MyFormSubmit();">FIND</a>
</div>
</form>
这会显示 [添加] 和 [查找] 的按钮。 Find 需要提交表单,我使用 MyFormSubmit() 验证数据,为页面添加视觉效果,然后 POST 数据。
我可以为 Find 按钮添加一个 CLASS 或 ID,在 JQuery 中我可以编写如下内容:
$(function() {
$(".MySearchButtonClass").click(function() {
// validate and process form here
});
});
在我理解 JQuery 的“新手”阶段,我不明白为什么我会这样做
我的旧方法识别对象附近的方法。在用户按下按钮之前,可能存在 JS 尚未加载的风险(是否存在?JS 的 LOAD 就在页面顶部)。
在加载文档之前不会激活 JQuery Document Ready 方法(我假设这可以保证 JS 全部存在并准备好运行?),但它将代码移动到我的 HTML 文件的单独部分- 所以当我在 HTML 源代码中看到 MyButtonArray DIV 时,我不清楚哪些对象有方法,哪些没有。
您能否帮助我了解我的选择是什么以及我应该注意的好处/陷阱?
编辑:我很满意 DOM 操作 - 例如当单击任何具有“LightBoxThumb”类的缩略图时会出现的 LightBox - 将使用 Unobtrusive Javascript。
但是,我一直在努力说服自己,具有特定操作的按钮应该以这种方式应用其方法。 (除了对“其他地方”的单个函数调用之外,我当然不会在按钮上放置任何代码,但在我看来,这是我关于该按钮功能的最佳线索,并且 Unobtrusive Javascript 层可能会使这更加困难来确定。)
Edit2 - 接受的答案
我接受了 Russ Cams 的回答。它以一种有助于我了解更多关于如何以及何时使用它的方式来描述 Unobtrusive Javascript。
目前(当我有更多经验时可能会改变!)我会坚持使用 OnClick 事件来对对象进行单一、不变的操作,因为我觉得这样更容易调试和诊断如果出现问题。对于允许单击标题列进行排序的表格上的 ZebraStripes(以及该类型的情况),我可以看到 Unobtrusive Javascript 方法的好处
Russ 的最后评论特别有帮助,在此重复:
“@Kristen - 你是对的,就像很多人一样 编程主题,还有更多 不止一种方法,人们会 坚决支持他们的信仰!如果 我们谈论的是单一方法 对于一个按钮,我完全 了解您来自哪里...
如果我们谈论很多 JavaScript,具有相同的函数调用 对于一个以上的元素,不同的 函数调用不同的方法, 等我认为它会更多 自己很难混在线 和不引人注目的方法,它 最好采用一个或 其他方法”
【问题讨论】:
标签: jquery unobtrusive-javascript document-ready