如何使用同一个类的多个对象指定location.href?

时间:2013-03-15 05:45:03

标签: php jquery html

好的,所以我有多个同名的对象:

<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首先引用我点击的链接来启动对话框?

2 个答案:

答案 0 :(得分:0)

你必须循环使用相同类的所有元素,如

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

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

修改

在click事件中,您可以访问目标锚点的href attr,如

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

答案 1 :(得分: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');
     }