1

さて、同じ名前のオブジェクトが複数あります。

<a href="<?php echo Utils::createLink('delete-ms'); ?>&tid=<?php echo $tid; ?>"
class="delete-ms">

<img src="img/status/CANCELED.png" alt="" title="Delete milestone." 
class="icon" style="width:18px; height: 18px; margin:0;"/>

</a>

オブジェクトが参照する は次のとおりです。

<div id="delete-ms-dialog" title="Delete this milestone?">
<p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;">  
</span>This milestone will be deleted. Are you sure?</p>
</div>

リンクの呼び出しに使用される JS は次のとおりです。

function initDeleteMSDialog() {
var deleteDialog = $('#delete-ms-dialog');
var deleteLink = $('.delete-ms');
deleteDialog.dialog({
    autoOpen: false,
    modal: true,
    width: 476,
    buttons: {
        'OK': function() {
            $(this).dialog('close');
            location.href = deleteLink.attr('href');
        },
        'Cancel': function() {
            $(this).dialog('close');
        }
    }
});
deleteLink.click(function() {
    deleteDialog.dialog('open');
    return false;
});

}

今私の問題は、複数のオブジェクトが同じクラスで宣言されていることです。JS 関数が呼び出されると、クラスがリンクのソースとして使用されます。そもそもダイアログボックスを開始するためにクリックしているリンクを location.href が参照するようにするにはどうすればよいですか?

4

2 に答える 2

0

次のような同じクラスのすべての要素をループする必要があります

$(".delete-ms").each(function(){
 console.log($(this).attr('href'));
});

http://jsfiddle.net/hZezC/3/

編集

クリックイベント内で、ターゲットアンカーのhrefattrにアクセスできます。

$(".delete-ms").click(function(e){
 console.log($(this).attr('href'));
});
于 2013-03-15T05:52:08.643 に答える
0

関数の外でグローバル変数を宣言してみてください。

var $lastClicked;

そして、deleteLink.click がトリガーされたときに変数を設定します。

deleteLink.click(function() {
    $lastClicked = $(this);
    deleteDialog.dialog('open');
    return false;
});

これにより、deleteDialog 関数内で変数にアクセスできるようになります。

    'OK': function() {
        $(this).dialog('close');
        location.href = $lastClicked.attr('href');
     }
于 2013-03-15T05:56:41.067 に答える