我刚刚开始研究 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”类的缩略图时可以出现的灯箱 - 将使用不显眼的 Javascript。
但是,我正在努力说服自己,具有特定操作的按钮应该以这种方式应用其方法。(除了对“其他地方”的单个函数调用之外,我当然不会在按钮上放置任何代码,但在我看来,这是我关于该按钮功能的最佳线索,并且 Unobtrusive Javascript 层可能会使这更加困难来确定。)
Edit2 - 接受的答案
我已经接受了 Russ Cams 的回答。它以一种有助于我了解更多关于如何以及何时使用它的方式来描述 Unobtrusive Javascript。
目前(当我有更多经验时可能会改变!)我会坚持使用 OnClick 事件来对对象进行单个、不变的操作,因为我觉得这对我来说更容易调试 - 并在出现问题时进行诊断. 对于允许单击标题列进行排序的表格上的 ZebraStripes(以及该类型的情况),我可以看到 Unobtrusive Javascript 方法的好处
Russ 的最后评论特别有帮助,在此重复:
“@Kristen - 你是对的,就像很多编程主题一样,有不止一种方法,人们会强烈地坚持他们的信念!如果我们谈论一个按钮的单一方法,我完全理解你在哪里'来自...
如果我们谈论大量的 JavaScript,相同的函数调用多个元素,不同的函数调用不同的方法,等等。我认为自己混合内联和不显眼的方法会更困难,它会是最好采用一种或另一种方法”