2011-10-30 2 views
1

に引き返す問題とコードです:アンカーでpreventDefaultをクリックし、以下

私はすでにhrefセットを持っていたアンカーをクリックしています。

ステップ1、アンカーで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を構築します。

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); 
} 

しかし、クリックイベントが再びpreventDefaultを持っており、何も起こりません$('#fileMove').click()を呼び出します。

この問題を回避するにはどうすればよいですか?

助けてください。

答えて

1

ダイアログはこのような何か実行して表示されている場合にのみ、あなたは条件付きで.preventDefault()を使用することができます。迅速な答えを

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

}); 
+0

感謝を。しかし、moveFileToFolderからclickイベントを発生させると、fileMove.Clickに戻り、showdevDialogを呼び出します。それは私が悪いコーディングをどのような円形.. soemです – Alapati

関連する問題