0

画面に従業員のリストが表示されています。それらのいずれかをクリックすると、ポップアップウィンドウが表示され、この従業員に対して「実行」できるいくつかのアクション(削除、変更...)のリストが含まれています。従業員をクリックすると、ポップアップが正しく表示されますが、別の従業員をクリックすると、新しいポップアップ ウィンドウが前のポップアップ ウィンドウに追加されます。これが私がした方法です:

    employee.click(function(){   //employee is a javascript variable 
          createPopUp(taskActions, mainDiv); //taskActions is an array of strings
     });

     function createPopUp(taskActions, parentDiv) {
     var popUp = null;
     if (taskActions.length != 0) {
        popUp = $('<div style="z-index:2;position:fixed;display:inline-block;border-style:solid;border-color:black;text-align:center;margin:0px;padding:2px;background-color:white"/>');
        for (var i = 0; i< taskActions.length; i++) {
           function createAction(i) {
              var actionDiv =  $('<div>' + taskActions[i]+ '</div>');
              actionDiv.on('click', function(event) {
                 //doSomeAction
               });
              popUp.append(actionDiv);
         }
         createAction(i);
      }
      parentDiv.append(popUp);
   }
}   

createPopUp のどこかにポップアップ ウィンドウを非表示にする必要があることはわかっています。そしておそらく popUp を parentDiv に追加する直前です。しかし、私がそうすると、popUp はもう表示されません。

ここで何が問題なのですか?

ご協力ありがとうございました

4

2 に答える 2

0

関数がjQuerycreatePopupオブジェクトを返すようにします。

次に、作成するたびに参照を保存して、後で削除できるようにします。

(function(){
  var $popUp;
  employee.click(function(){   //employee is a javascript variable 
    if($popUp) $popUp.remove();
    $popUp = createPopUp(taskActions, mainDiv); //taskActions is an array of strings
  });
})();

function createPopUp(taskActions, parentDiv) {
    var popUp = null;
    if (taskActions.length != 0) {
        popUp = $('<div style="z-index:2;position:fixed;display:inline-block;border-style:solid;border-color:black;text-align:center;margin:0px;padding:2px;background-color:white"/>');
        for (var i = 0; i< taskActions.length; i++) {
           function createAction(i) {
              var actionDiv =  $('<div>' + taskActions[i]+ '</div>');
              actionDiv.on('click', function(event) {
                 //doSomeAction
               });
              popUp.append(actionDiv);
         }
         createAction(i);
      }
      parentDiv.append(popUp);
   }
   return popUp;
}   
于 2013-09-17T15:22:14.077 に答える
0

divnew を追加する前に、 にクラスを追加し、そのクラスのすべての要素を削除するだけdivです。

$('.popup').remove();
popUp = $('<div class="popup" style="z-index:2 // etc
于 2013-09-17T15:32:47.347 に答える