0

いくつかのオブジェクトが含まれているページがありますが、そのうちのいくつかはユーザーの要求に応じて削除できます。jQueryツールのyes/noオーバーレイを使用して、「よろしいですか?」を表示したいと思います。削除を行う前に確認を得るためにユーザーにダイアログを入力します。私はjQueryToolsデモを適応させ、少なくとも機能しないところまでは機能させました。

フロープレーヤーのデモに従って、「これを削除」リンクごとにオーバーレイを作成しました。それらをクリックすると、オーバーレイが適切に表示されます。私が今必要としているのは、クリックを処理するコードがクリックされたボタンをチェックし、「はい」ボタンがクリックされた場合は、リンクからhrefを取得し、ページをその場所にリダイレクトすることです。問題は、私が見ているように、yesボタンとnoボタンを含むDIVに接続されているクリックハンドラーには、どのリンクがクリックされて呼び出されたかを判断する方法がないことです。適切なhrefを取得できません。フロープレーヤーデモのクリックハンドラーは、オーバーレイを呼び出すことができるページ上の場所が1つだけであることを前提としています。それは私にはうまくいきません-私にはたくさんあります。

だから:これを機能させる方法はありますか?何かあるはずですが、この時点で私の脳は疲れ果てています。助けてくれてありがとう。


リンクを含むリンクは次のようになります。

<li class='yuimenuitem'><a class='yuimenuitemlabel modalInput' rel='#yesno' href='/slate/delete/12345'>delete this item</a></li>

オーバーレイに割り当てられたクリックハンドラーは、基本的にフロープレーヤーのデモにあるものから変更されていません。

4

1 に答える 1

1

オーバーレイのonBeforeLoadイベントを使用して、クリックされたボタンのIDで変数を設定できます。

次に、[はい]または[いいえ]をクリックすると、ボタンはその変数をチェックして、ユーザーの正しいURLをロードできます。これはテストされていませんが、このようなものは機能するはずです...

var clicked;
var links = [];//put a hash of button id's and links in here
var triggers = $(".modalInput").overlay({
    mask: {
        color: '#ebecff',
        loadSpeed: 200,
        opacity: 0.9
    },

    onBeforeClick: function(event) {
        var element = e.originalTarget || e.srcElement;
        clicked = element.id
    },

    closeOnClick: false
});
var buttons = $("#yesno button").click(function(e) {
    var yes = buttons.index(this) === 0;
    if(yes) {
        window.location = links[clicked];
    }
});
于 2010-12-08T04:25:42.690 に答える