基本上这是我的功能:
function FillDivLeft(groups, side) {
var cnt = 1;
$.each(groups, function (index, groups) {
$(side)
.append(
$(document.createElement('label')).attr({
id: cnt + 'lbl',
class: 'myClass'
})
);
$('#' + cnt + 'lbl')
.append(
$(document.createElement('input')).attr({
id: groups.GroupCode,
type: 'checkbox',
name: 'testGroup',
class: 'leftClass'
})
);
$('#' + groups.GroupCode).after
(
$(document.createElement('span')).text(groups.GroupName).attr({
class: 'leftSpan'
})
);
$('#' + cnt + 'lbl').after($(document.createElement('br')));
cnt = cnt + 1;
});
}
我尝试了所有种类,虽然创建了新元素,分配了类等,但页面上的所有jquery函数似乎都不起作用,例如:
$('.leftSpan').click(function () {
$('#lblOutput').text(this.id);
});
即使是父div上的悬停功能也不起作用。
我看不出可能的原因,所以任何帮助或指示都会受到赞赏。
答案 0 :(得分:2)
如果您使用的是jQuery 1.7+,则需要使用'on'。您可以将'body'替换为元素的任何父div
$('body').on('click','.leftSpan',(function () {
$('#lblOutput').text(this.id);
});
仅使用.click函数需要在dom准备好时创建元素。它不会将事件附加到动态创建的元素。如果您使用的是jQuery 1.6及以下版本,则必须使用.live
您可以在此处详细了解“开启”http://api.jquery.com/on/
答案 1 :(得分:0)
您是否尝试$(this)
而不是this
?或者使用.attr('id')
代替.id
?
$('.leftSpan').click(function () {
$('#lblOutput').text($(this).attr('id'));
});