以下是问题和代码:
我点击了已设置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
并且没有任何反应。
如何解决这个问题?
任何帮助表示感谢。
答案 0 :(得分:0)
只有在通过执行以下操作可以看到对话框时,才可以有条件地使用.preventDefault()
:
$('#fileMove').click(function(e){
alert($('#fileMove').attr('href'));
if ($("#JQueryFTD_Demo:visible"){
e.preventDefault(); //prevent orignal href
showdevDialog(); //dialog popup call
};
});