Javascript动态事件处理,而不是Jquery
这是我的密码Javascript动态事件处理,而不是Jquery,javascript,jquery,dynamic,event-handling,Javascript,Jquery,Dynamic,Event Handling,这是我的密码 <html> <head> <script type="text/javascript"> window.onload = function(){ sel = document.getElementsByTagName('select'); for(i=0;i<sel.length;i++)sel[i].onclick = function(){alert('');} }
<html>
<head>
<script type="text/javascript">
window.onload = function(){
sel = document.getElementsByTagName('select');
for(i=0;i<sel.length;i++)sel[i].onclick = function(){alert('');}
}
</script>
</head>
<body>
<div id="ss"></div>
<select></select>
<input type="button" onclick="document.getElementById('ss').appendChild(document.createElement('select'))"/>
</body>
</html>
window.onload=函数(){
sel=document.getElementsByTagName('select');
对于(i=0;i将事件绑定到DOM中已存在的父元素:
document.body.addEventListener('click', function (e) {
if (e.target.tagName.toLowerCase() == 'select') {
alert('You clicked a select!');
}
});
如果使用getElementById()
而不是getElementByTagName(),则将单击绑定到表单
附近的元素“closer”会稍微明智一些
它更简单,因为您不必担心绑定到的号码的索引。您只需在加载窗口时设置onclick。您只需将当前在window.onload中的代码放入一个命名函数,然后在每次添加新的select时调用它
下面是一个愚蠢的方法:
<html>
<head>
<script type="text/javascript">
function update () {
sel = document.getElementsByTagName('select');
for(i=0;i<sel.length;i++)sel[i].onclick = function(){alert('');}
}
window.onload = update;
</script>
</head>
<body>
<div id="ss"></div>
<select></select>
<input type="button" onclick="document.getElementById('ss').appendChild(document.createElement('select'));update();"/>
</body>
</html>
函数更新(){
sel=document.getElementsByTagName('select');
对于(i=0;i,无需在每次添加一个select时将onclick处理程序绑定到每个select
我不打算重新键入您的整个页面,但您可以通过阅读以下片段了解情况:
function handler() {
alert('You clicked a select!');
}
window.onload = function(){
sel = document.getElementsByTagName('select');
for(int i= 0; i < sel.length; i++) {
sel[i].onclick = handler;
}
}
function addSelect() {
var slt = document.createElement("select");
document.getElementById('ss').appendChild(slt);
slt.onclick = handler;
}
<input type="button" onclick="addSelect();"/>
函数处理程序(){
警报('您单击了选择!');
}
window.onload=函数(){
sel=document.getElementsByTagName('select');
对于(int i=0;i
您可以使用如下所示的跨浏览器解决方案动态添加事件处理程序
sel = document.getElementsByTagName('select');
for( i=0; i<sel.length; i++){
if (sel[i].addEventListener){
sel[i].addEventListener("click", clickHandler, false);
} else if (sel[i].attachEvent){
sel[i].attachEvent("onclick", clickHandler);
}else{
sel[i].onclick = clickHandler;
}
}
function clickHandler(event){
}
sel=document.getElementsByTagName('select');
对于(i=0;ijQuery的live函数通过使用“”工作。基本思想是将侦听器绑定到父元素上,该父元素在页面加载时保证存在。低于该()将触发一个可以被父侦听器捕获的事件。从那里,您需要检索事件的目标/源元素,并确定它是否是您关心的事件
类似的内容可以用来监听点击。只需确保您添加的任何新元素都位于适当的父容器中,并且具有一个属性,使它们与其他可点击元素区分开来
<html>
<head>
<script type="text/javascript">
window.onload = function(){
// get the relevant container
var eventContainer = document.getElementById("EventContainer");
// bind a click listener to that container
eventContainer.onclick = function(e){
// get the event
e = e || window.event;
// get the target
var target = e.target || e.srcElement;
// should we listen to the click on this element?
if(target.getAttribute("rel") == 'click-listen')
{
alert("You clicked something you are listening to!");
}// if
};
};
</script>
</head>
<body>
<div id="EventContainer">
<input type="button" rel="click-listen" name="myButton" value="Listening to this button." />
<input type="button" name="anotherButton" value="Not listening." />
<p>I'm also listening to this a element: <a href="#" rel="click-listen">listening to this</a></p>
</div>
</body>
</html>
window.onload=函数(){
//获取相关容器
var eventContainer=document.getElementById(“eventContainer”);
//将单击侦听器绑定到该容器
eventContainer.onclick=函数(e){
//获取事件
e=e | | window.event;
//击中目标
var target=e.target | | e.src元素;
//我们应该听听点击这个元素的声音吗?
如果(target.getAttribute(“rel”)=“单击侦听”)
{
警报(“您单击了您正在收听的内容!”);
}//如果
};
};
我也在听这个元素:
用sel[i]替换sel,即使在这之后,它也不适用于动态创建的元素,但可以帮助我了解有关跨浏览器脚本的新信息:-)谢谢,请解释这行代码e=e | | | window.event这里的| |意思是什么?这称为短路评估。|
是“逻辑OR”。它返回第一个真值或最后一个值。