我有一个简单的代码,在div容器中有两个按钮。我想使用函数获取按钮的id。
问题:有人可以解释为什么点击Button1不会提醒myButton1
?我该如何解决这个问题?
代码:
<html>
<body>
<style type="text/CSS">
#mydiv{
border: 1px dashed blue;
width: 100px;
height: 100px;
}
</style>
<div id="myDiv">
<input type="button" id="myButton1" value="Button1"></input>
<input type="button" id="myButton2" value="Button2"></input>
</div>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="code.js"></script>
</body>
</html>
code.js :
myfunction = function(e){
alert(this.id);
e.stopPropagation();
}
$('#myDiv').click(function(){
alert($('#myDiv').attr('id'));
});
$('#myButton1').click("myfunction()");
$('#myButton2').click(function(e){
alert(this.id);
e.stopPropagation();
});
答案 0 :(得分:2)
$('#myButton1').click(function(){myfunction(this)});
myfunction = function(e){
alert(e.target.id);
e.stopPropagation();
}
答案 1 :(得分:1)
您的#myButton2
示例准确无误。您需要使用this.id
来获取触发事件的元素的ID:
$('#myDiv').click(function() {
alert(this.id);
});
但是,如果没有点击该按钮,则会点击整个#myDiv
元素。
如果您想要一个事件来处理所有按钮的点击,您可以使用:
$('#myDiv').find('input[type="button"]').click(...);
答案 2 :(得分:1)
试试这个: -
$('#myButton1').click(function(){
console.log(this.id);
});
答案 3 :(得分:1)
当您单击myButton1
时,JS无法调度该事件并抛出TypeError: undefined is not a function
,因为您调用的方法不正确。但是,您的浏览器可以在父#myDiv
上注册点击,从而提醒其ID而不是您期望的那个。
你差不多用你自己的代码开启了。由于您将myfunction
作为click函数的参数传递,因此它不应包含括号或语音标记。
E.G:
myfunction = function(e){
alert(this.id);
e.stopPropagation();
}
$('#myDiv, #myButton1, #myButton2').click(myfunction);
答案 4 :(得分:-1)