6

each()次のJavaScriptコードで何をしているのかをよりクリーンな(より簡潔な)方法で実行できるかどうか疑問に思いました。

$(".moreinfodialog")
    .before('<a href="#">Click for more info.</a>')
    .each(function() {
        var temp = this;
        $(this).prev("a").click(function() {
            $(temp).dialog("open");
            return false;
        });
    })
    .dialog({ autoOpen: false, modal: true });

最後の呼び出しでdom要素が並べ替えられるため、.moreinfodialogクラスがhrefsの隣にないことに注意してください。

ところで:このソースはjquery / jquery-uiダイアログを使用して、.moreinfodialogクラスのdiv内のテキストを非表示にし、テキストに置き換えClick for more info.ます。そのテキストをクリックすると、元のdiv内のテキストを含むダイアログが表示されます。

4

1 に答える 1

4

編集: この回答は、古いバージョンのjQueryに関連していました。新しいバージョンで$.mapは動作が異なります。

配列のすべての要素に対して同じ操作を実行するために使用される$.map()関数を確認してください。

$('.moreinfodialog').map(function(idx, element) {
    $(this).prev("a").click(function() {
            $(element).dialog("open");
            return false;
    });
});
于 2009-01-16T22:05:21.527 に答える