我没有解决的问题与我的'悬停(或鼠标悬停)上的'获取元素ID'相关

时间:2012-06-06 23:17:03

标签: jquery

基本上这是我的功能:

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上的悬停功能也不起作用。

我看不出可能的原因,所以任何帮助或指示都会受到赞赏。

2 个答案:

答案 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')); });