2010-05-05 25 views
2

假设我的HTML页面上有一个<select>元素,并且我想在选择更改时运行一些Javascript。我正在使用jQuery。我有两种方法将代码与元素相关联。如何最好地将代码与jQuery中的事件相关联?

方法1:jQuery的.change()

<select id='the_select'> 
<option value='opt1'>One</option> 
<option value='opt2'>Two</option> 
</select> 

<script> 
$('#the_select').change(function() { 
    alert('Changed!'); 
}); 
</script> 

方法2:onchange属性

<select id='the_select' onchange='selectChanged();'> 
<option value='opt1'>One</option> 
<option value='opt2'>Two</option> 
</select> 

<script> 
function selectChanged() { 
    alert('Changed!'); 
} 
</script> 

我在这里理解不同的模块化的:例如,方法1保持代码的引用出HTML的,但方法2不需要在代码中提及HTML ID。

我不明白的是:这两者之间是否存在操作上的差异,这会让我更喜欢一个优于另一个?例如,是否存在边缘情况下的浏览器,其中一个工作而另一个不工作?与jQuery的集成更好吗?代码与事件的后期绑定是否会影响页面的行为?

你会选择哪一个?为什么?

回答

0

我想这会更容易管理,绑定和解绑时,你不硬编码。但是,硬编码的例子非常适合在Google地图中进行活动。由于很难知道页面加载的哪个阶段内有一个元素可用,所以从外部脚本进行绑定会导致偶然的问题。

但我但从关注点分离的意思是不是在标记有事件逻辑,当然是最好的

另一件事是关于用户的连接。有时硬编码事件会增加速度相关的问题,用户点击某个调用未加载函数的东西时会出现问题。

此外,从屏幕阅读器或任何设备没有JS具有事件处理属性的角度来看,基本上你正在用非感觉填充页面,这增加了页面大小。

1

方法1的一个优点是,结合事件不破坏可能已经结合一些代码的元素的任何其他JavaScript。使用方法2,如果另一个代码已经绑定了更改事件,则必须更改HTML代码。

相关问题