1

jquery uiダイアログが一度しか開かないという問題がありました。

だから私はこれを試しました:

/* Prepare */
$('.steps > div.step-1 .bicicleta .attributos').dialog({
            autoOpen:false,
            width: 600,
            modal: true
});
            /* Trigger */
$('.steps > div.step-1 .bicicleta > .info > .img').on('click',function(){
            alert($(this).parents('.bicicleta').find('.attributos').length);
            $(this).parents('.bicicleta').find('.attributos').dialog('open');
});

問題は、クリック イベントで .attributos クラスを見つけたように見えることです。firebug を調べたところ、コンテンツが UI ダイアログの横に移動されました。

これを防ぐ方法はありますか?

4

1 に答える 1

1

divを呼び出す.dialog({})と、要素に追加されbody、ヘルパー div 内にラップされます。div が移動したため、親/兄弟/子セレクターを使用してその div を見つけることができなくなりました。

考えられる解決策の 1 つは、ID を使用して対話型の div を参照することです。大まかな概要は次のとおりです。

var id = $('.steps > div.step-1 .bicicleta .attributos').uniqueId().attr('id');
$('#' + id).dialog({
    autoOpen: false
});
$('.steps > div.step-1 .bicicleta > .info > .img').data('linked-dialog-id', id).on('click', function () {
    var id = $(this).data('linked-dialog-id');
    $('#' + id).dialog("open");
});

uniqueIdは、必要に応じて、指定された要素に一意の ID を追加します。

于 2013-10-11T09:51:30.503 に答える