锚点击preventDefault,然后重新打开

时间:2011-10-30 15:42:24

标签: jquery anchor href preventdefault

以下是问题和代码:

我点击了已设置href的锚点。

Step1,在锚点fileMove点击后,我阻止它触发原始href,因为我打开一个弹出窗口供用户点击某些内容并提供一些信息。

$('#fileMove').click(function(e) {
    alert($('#fileMove').attr('href'));
    e.preventDefault(); //prevent original href
    showdevDialog(); //dialog popup call
});

function showdevDialog() {
    $('#JQueryFTD_Demo').dialog(); //dialog with div JQueryFTD_Demo
}

// this will be in document.ready
$('#JQueryFTD_Demo').fileTree({
    root: 'D:\\Test',
    script: '../jqueryFileTree.jsp',
    expandSpeed: 1000,
    collapseSpeed: 1000,
    multiFolder: true,
    loadMessage: 'Please Wait While Loading...'
    }, function(file) {
        //alert(file);
    }, function(dir){
        moveFileToFolder(dir); //once user selects a folder passing 
                                              //it to function          
});

此函数隐藏弹出窗口,然后使用文件夹名称构造新的href,然后绑定click事件。

function moveFileToFolder(dir) {
    $('#JQueryFTD_Demo').hide();
    $('#JQueryFTD_Demo').dialog('close');
    var _href = $('#fileMove').attr("href");
    $('#fileMove').attr("href", _href + '&moveto=' + dir);
    alert($('#fileMove').attr('href'));
    $('#fileMove').unbind('click').click();
    //$('#fileMove').attr('href')
    //alert("Inside func.. " + dir);
}

但点击事件再次调用$('#fileMove').click() preventDefault并且没有任何反应。

如何解决这个问题?

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

只有在通过执行以下操作可以看到对话框时,才可以有条件地使用.preventDefault()

$('#fileMove').click(function(e){
    alert($('#fileMove').attr('href'));
    if ($("#JQueryFTD_Demo:visible"){
        e.preventDefault(); //prevent orignal href
        showdevDialog(); //dialog popup call
    };

});