2017-01-05 20 views
-1

當我點擊下面的'添加'我想輸入元素出現爲父。它工作正常,但所有子元素執行而不是一個。此外,如果我點擊他們執行的任何位置,我不想要。動態添加輸入元素作爲樹點擊jquery

$(document).ready(function() { 
 
    $(".add_field_button").click(function(e) { 
 
    e.preventDefault(); 
 
    $("#maingroup_1").append('<div id="Subgroupmain">Add 1<input type="text"></div>'); 
 
    return false; 
 
    }); 
 

 
    $(document).on("click", "#Subgroupmain", function(e) { 
 
    $("#Subgroupmain").append('<div id="SubSubgroupmain" style="margin: 0 0 0 23px;">Add 2<input type="text"></div>'); 
 
    }); 
 
    
 
    $(document).on("click", "#SubSubgroupmain", function(e) { 
 
    $("#SubSubgroupmain").append('<div id="Sub3groupmain" style="margin: 0 0 0 53px;">Add 3<input type="text"></div>'); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="parent"> 
 
    <div id="maingroup"> 
 
    <div id="maingroup_1"> 
 
     <span class="add_field_button">Add </span> 
 
     <input type="text"> 
 
    </div> 
 
    </div> 
 
</div>

+0

請說明您的具體問題或添加額外的細節,突顯正是你需要的。正如目前所寫,很難確切地告訴你所要求的 –

+0

從未重複的ID。 –

+0

我只想當我點擊「添加」一個輸入元素應該顯示爲一個子元素。它就像三層無序列表。 – mgons

回答

2

你有幾個問題在這裏。首先,您每次添加新內容時都會重複id屬性。改爲將這些改爲類。然後在事件處理程序中使用this關鍵字來引用引發該事件的元素,以便您只追加到該單個實例。最後,在事件上添加對stopPropagation()的調用,以停止事件冒泡,以便嵌套的div元素不會引發多個事件,這些事件又會附加多個div。試試這個:

$(document).ready(function() { 
 
    $(".add_field_button").click(function(e) { 
 
    e.preventDefault(); 
 
    $("#maingroup_1").append('<div class="Subgroupmain">Add 1<input type="text"></div>'); 
 
    return false; 
 
    }); 
 

 
    $(document).on("click", ".Subgroupmain", function(e) { 
 
    e.stopPropagation(); 
 
    $(this).append('<div class="SubSubgroupmain" style="margin: 0 0 0 23px;">Add 2<input type="text"></div>'); 
 
    }); 
 
    
 
    $(document).on("click", ".SubSubgroupmain", function(e) { 
 
    e.stopPropagation(); 
 
    $(this).append('<div class="Sub3groupmain" style="margin: 0 0 0 53px;">Add 3<input type="text"></div>'); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="parent"> 
 
    <div id="maingroup"> 
 
    <div id="maingroup_1"> 
 
     <span class="add_field_button">Add </span> 
 
     <input type="text"> 
 
    </div> 
 
    </div> 
 
</div>

+0

Thanx這工作:) – mgons

+0

當我把鼠標鍵入它自動生成新的元素我怎麼可以防止這種情況,點擊「添加」一個新的輸入元素應該出現。請提供任何建議。 – mgons

0

您使用的ID重複的,但這裏的實際問題是,你要追加到一般的ID,而不是點擊目標。

使用此:

$(this).append(); 

相反的:

$("#SubSubgroupmain").append(); 

這確實應該是:

$(".SubSubgroupmain").append(); 
+0

我明白你的觀點,但我在id的名字後面添加了增量數字。我刪除代碼以儘可能簡單。 – mgons

+0

你不是,它不在你的代碼中。 –

+0

這是代碼$(ADD_BUTTON)。單擊(函數(E){//在添加輸入按鈕點擊 \t \t \t \t \t e.preventDefault(); \t \t \t \t \t如果(X '); //一個DD輸入框 \t \t \t \t \t} \t \t \t \t}); – mgons