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を使用する必要があります

'on'の詳細については、 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 に答える