2017-11-13 7 views
0

私のコードに関する質問があります。どういうことが分かりますか? 関数submitColumnをコールします。私は要素を実際にクリックしないでjqueryを実行する関数でclick()を呼び出す

  • の要素名とIDを持つリストを追加しないでください
  • 同じ時間にそのリストにスパンを追加しますidをクラスとし、そのスパンをクリックして使用したい要素を配列から削除して要素を削除します私のリストから、しかし、span.click(deleteColumn())は自動的に呼び出され、それは私が理解できないものです。私を助けるため おかげで、素晴らしい一日あなたのすべての

    function submitColumn() { 
        //get textual input from the user. 
        var colName = document.querySelector("#txtCol").value; 
        var colType = document.querySelector("#selectType").value; 
    
        if (columnsArray.length > 0) { 
         for (var i = 0; i < columnsArray.length; i++) { 
          var count = undefined; 
          if (columnsArray[i] === colName) { 
           count = true; 
          } else if (columnsArray[i] !== colName) { 
           count = false; 
          } 
         } 
    
         if (count) { 
          return alert("You can not call two column with the same name"); 
         } else { 
          $("<li/>").attr("id", colName + "id").addClass("colAndType").text("New column added with name: " + colName + " and type " + colType).appendTo("#colListUl"); 
          $("#" + colName + "id").append('<span class="nav-click" />'); 
          $(".nav-click").addClass("ui-icon ui-icon-closethick").attr("id", "close" + colName).click(deleteColumn(colName)); 
          columnsArray.push(colName); 
          columnsTypeArray.push(colType); 
         } 
        } else { 
         $("<li/>").attr("id", colName + "id").addClass("colAndType").text("New column added with name: " + colName + " and type " + colType).appendTo("#colListUl"); 
         $("#" + colName + "id").append('<span class="nav-click" />'); 
         $(".nav-click").addClass("ui-icon ui-icon-closethick").attr("id", "close" + colName).click(deleteColumn(colName)); 
         columnsArray.push(colName); 
         columnsTypeArray.push(colType); 
        } 
    } 
    
    function deleteColumn(idColumn) { 
        var idLi = idColumn + "id"; 
        var close = "close" + idColumn; 
        console.log(close, idLi); 
    } 
    

    答えて

    1

    このコード行は、deleteColumn機能を実行するのではなく、それを参照しているが...

    $(".nav-click").addClass("ui-icon ui-icon-closethick") 
        .attr("id", "close" + colName).click(deleteColumn(colName)); 
    

    あなたはそれを変更する場合ので、

    $(".nav-click").addClass("ui-icon ui-icon-closethick") 
        .attr("id", "close" + colName).click((function(columnId) { 
         deleteColumn(columnId) 
        })(colName)); 
    

    はSAMというあなたが持っている両方の場所でそれを変更することを忘れないでください...それはあなたの問題を解決する必要があり、関数への参照を追加するのではなく、それを実行します電子コード。

    +0

    ありがとうございました@Archer、しかし、私は別の問題を抱えています。私は最初のelemだけで、他のものではなく、関数のクリック機能を呼び出すと、 –

    +0

    $( "#close" + colName).click(function ){ \t \t \t \t deleteColumn(colName)}); –

    +0

    関数を呼び出すときの値ではなく、関数を作成するときに 'colName'の値を使用するように、関数を別のエンクロージャに含めることができます。私は、コードを変更する予定です。 – Archer

    関連する問題