我试图弄清楚用户在DIV容器内点击了什么按钮,但我必须在这里做错事。我一直收到无属性错误。谁能告诉我,如果我做错了什么?这是我的JS:
// Bind ButtonClicks
$('#jplayers .button').on("click",function(e){
alert("Class :" + e.attr("class"));
// Determin what button
if( e.attr("class").indexOf("play") > 0 ){
// Play Clicked
player.jPlayer("play");
}else{
// Pause Clicked
player.jPlayer("pause");
}
});
这是我的HTML:
<div id="jplayers">
<!--First Player-->
<div id="zen_1">
<span class="player"></span>
<span class="circle"></span>
<span class="progress"></span>
<span class="buffer"></span>
<span class="drag"></span>
<div class="button">
<span class="icon play"></span>
<span class="icon pause"></span>
</div>
</div>
<!--Second Player-->
<div id="zen_2">
<span class="player"></span>
<span class="circle"></span>
<span class="progress"></span>
<span class="buffer"></span>
<span class="drag"></span>
<div class="button">
<span class="icon play"></span>
<span class="icon pause"></span>
</div>
</div>
</div>
感谢您的帮助
答案 0 :(得分:7)
您可以使用this
来获取课程。
$(this).attr("class")
您使用的e
不是元素,而是点击事件。
$('#jplayers .button').on("click",function(e){
alert("Class :" + $(this).attr("class"));
});
答案 1 :(得分:2)
在您的情况下,您可以在e
事件的回调方法中使用 click
参数。
e.target返回用户单击的相应元素。
$('#jplayers').on("click", function (e) {
// using this you can access the specific element
var className = $(e.target).prop('class');
if (className.indexOf("play") !== -1 || className.indexOf('pause') !== -1) {
alert(className);
// you can access it using $(e.target)
}
});
JSFiddle(带有简单的示例代码)