我在develepors团队中很新。
我需要一些强有力的论据和/或“陷阱”示例,因此我的老板将最终了解Unobtrusive JavaScript的优势,以便他和团队中的其他成员停止这样做:
<input type="button" class="bow-chicka-wow-wow"
onclick="send_some_ajax(); return false;" value="click me..." />
和
<script type="text/javascript">
function send_some_ajax()
{
// bunch of code ... BUT using jQuery !!!
}
</script>
我建议使用一种非常常见的模式:
<button id="ajaxer" type="button">click me...</button>
和
<script type="text/javascript">
// since #ajaxer is also delivered via ajax, I bind events to document
// -> not the best practice but it's not the point....
$(document).on('click', '#ajaxer', function(ev) {
var $elem = $(this);
ev.preventDefault();
});
我的老板(和其他人)不想使用此方法的原因是FireBug(或Chrome开发工具)中的事件检查不再简单了,例如
<input type="text" name="somename" id="someid" onchange="performChange()">
他可以立即查看在变更事件上执行的功能,并在一个充满意大利面条代码的巨大JS文件中直接跳转到该功能。
对于Unobtrusive JavaScript,他唯一会看到的是:
<input type="text" name="somename" id="someid" />
他不知道某些事件(如果有)是否绑定到该元素,以及哪个函数将被触发。
我在寻找解决方案并找到了它:
$(document).data('events') // or .. $(document).data('events').click
但是,这种“方法”导致它花费了“太长的时间...”来找出哪个函数在哪个事件上触发,所以我被告知停止这样的绑定事件。
我想问您一些示例或强大的优势,或“为什么我们应该使用UJS”的其他建议
更新:建议“换工作”不是理想的解决方案。
更新2:好的,我不仅建议使用jQuery事件绑定,还这样做了。在我写完所有事件委托之后,老板来找我,为什么我要用他不知道的方法来做事件委托?
我提到了一些明显的好处,例如-有15个输入字段,并且所有输入字段都有一个onchange
事件(不仅其中一些还具有一个事件onkeyup
),因此为所有输入字段编写这种事件委托类更为实用,而不是执行15次,特别是如果所有HTML都将用PHP的echo呈现->echo '... <input type="text" id="someid" ... />...'
js-this-class-do-something
类,因此,您可以在代码中轻松地对其进行CTRL + F。