我可以使用JQuery的click函数获取LI元素的ID,但是当我创建自己的函数时,LI元素的ID未定义:
http://codepen.io/omarel/pen/gwvpvQ
第一个LI元素使用Jquery的点击功能。第二个元素使用它自己的函数,其中ID未定义。
HTML
<ul id="pricerange_options" class=" options">
<li id="option1" data-value="1" class="dropdown-option">1</li>
<li id="option2" data-value="1" class="dropdown-option" onClick="chooseDropDownOption();">2</li>
</ul>
JQuery的
function chooseDropDownOption() {
alert($(this).attr('id'));
}
$('#pricerange_options li').click(function () {
alert($(this).attr('id'));
});
答案 0 :(得分:4)
当你在jQuery中附加一个不显眼的事件处理程序时,该函数在引发事件的元素的范围内运行,因此this
关键字引用该元素。
通过on*
事件属性附加事件时,它会在window
范围内运行,因此this
会引用window
。要解决此问题,请将元素作为参数发送到您的函数:
function chooseDropDownOption(el) {
alert($(el).attr('id')); // or just el.id
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="pricerange_options" class=" options">
<li id="option2" data-value="1" class="dropdown-option" onClick="chooseDropDownOption(this);">2</li>
</ul>
&#13;
应该注意的是,使用on*
事件处理程序已经过时了。您应该尽可能使用不显眼的事件处理程序。