您好下, 所以我有这个代码:
$(document).on('click', ".buttonSelectAllOpt", function () {
alert(this.attr("id"));
});
和PHP:
$iii=1
while([...]){
echo "<span class=\"buttonSelectAllOpt\" id=\"buttonSelectAllOpt$iii\">Some text</span>";
$iii++;
}
我希望这是.buttonSelectAllOpt,但是 似乎这是指文件,而不是选择器。 你知道我能以某种方式调用选择器吗?
答案 0 :(得分:2)
this
将引用被单击的.buttonSelectAllOpt
元素,但是您需要将其包装在jQuery对象中以访问attr()
方法。试试这个:
$(document).on('click', ".buttonSelectAllOpt", function () {
alert($(this).attr("id"));
});
答案 1 :(得分:1)
this
将引用所选项目,因此请尝试选择实际元素:
$('.buttonSelectAllOpt').click(function () {
alert($(this).attr("id"));
});
另请注意,.click
是.on('click')
的首选简写。将事件附加到实际对象(而不是文档)也更快。
请参阅此JSFiddle。
答案 2 :(得分:0)
使用this.id
或$(this).attr('id')
。在事件处理程序内部,this
是一个DOM元素,因此您可以直接访问其属性。如果要使用jQuery .attr()
方法,则需要将其包装在jQuery对象中。
答案 3 :(得分:0)
这里有一个替代答案,因此您不需要在文档本身注册活动......
尝试创建这样的方法:
var initBtnHandler = function () {
$('a.buttonSelectAllOpt').on('click', function() {
alert($(this).attr('id'));
});
}
然后,在完成AJAX之后,只需通过调用函数重新注册事件:
$.ajax({
url: 'yourUrl',
type: 'post',
success: function () {
// do something
},
complete: function() {
initBtnHandler();
}
});
现在,您的新项目将在事件处理程序中注册。