0

基本上这是我的功能:

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

我看不到可能的原因,因此将不胜感激任何帮助或指示。

4

2 回答 2

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/

于 2012-06-06T23:21:21.830 回答
0

你试过$(this)代替this吗?或者使用.attr('id')而不是.id

$('.leftSpan').click(function () { $('#lblOutput').text($(this).attr('id')); });

于 2012-06-06T23:22:20.410 回答