我们可以通过多种方式在HTML元素上附加事件。 第一种方式是:HTML属性
<div id="foo" onclick="print2()> My event is attached as HTML attribute</div>
第二种方法是使用一些库(比如jQuery)
<div id="bar"> My event is attached using jQuery </div>
<script>
$("#bar").click(function() {
alert("Hi this is Bar");
}
</script>
我之前认为jQuery可能在内部将事件转换为相应的HTML属性,但这不会发生。请检查此http://jsfiddle.net/blunderboy/wp4RU/3/
我正在记录foo和bar的所有属性,并且看到bar没有onclick属性。 请解释一下。
答案 0 :(得分:3)
没有称为HTML事件!您描述的两种类型的事件是内联事件和不显眼的事件,都是 javascript 事件。
当您在元素本身上声明javascript代码时,它将变为内联事件。您有一些常见事件(作为HTML元素的属性),例如onclick
,onkeydown
,onkeypress
,onkeyup
,所有这些事件都以on
开头。一个这样的例子是:
<a href="#" onclick="alert('You clicked me!')">Click Me!</a>
我们需要指定在触发事件时要执行的操作。 =
符号始终在JavaScript中用于将右侧的值分配给左侧的方法或属性。
窗口不是我们可以附加事件的唯一对象。我们可以将事件附加到网页中的任何对象,前提是我们有一种唯一标识该对象的方法。识别对象的一种方法是给它一个ID并通过document.getElementById("id_of_the_element")
引用它。
让我们采取相同的例子。
<a href="#" id="clickme">Click Me!</a>
而不是onclick
属性,我在同一个地方有一个ID
,它唯一地标识了HTML元素<a>
。现在我可以通过这种方式在javascript中获取ID:
document.getElementById('clickme');
为此,我可以附加一个事件处理程序,它与我们使用属性的方式没有太大区别。它只是前面没有on
。在我们之前的示例中,我们使用了onclick
,但现在我们将使用click
。
document.getElementById('clickme').click = functionName;
这里,functionName
指的是任何javascript的函数名称或匿名函数。因此,对于警报,如果我们创建一个名为alertme()
的函数,我们可以这样定义:
function alertme()
{
alert('You clicked me!');
}
现在将函数附加到元素可以这样做:
document.getElementById('clickme').click = alertme;
仍然感觉很懒,你可以使用匿名函数方式来实现它,它没有名字:
document.getElementById('clickme').click = function () {
alert('You clicked me!');
}
希望你理解。 :)让我知道进一步澄清。