2013-07-09 96 views
0

我有一個單獨的div,裏面有兩個選擇框。在第一個選擇中選擇一個項目後,AJAX將填充第二個選擇框中的相應項目。一旦在第二個選擇框中選擇了一個項目,我想要創建一個新的div,在第一個之後,根據第一個div中的值創建一些新的選擇框。.after()元素不起作用

看來,.insertAfter,.append不會工作,如果我想添加一個實際的HTML元素(div,h2等)。如果我只是將明文添加到.after,它工作得很好。

因此,如果我添加$('#form_pt1').after("<div id='test'>Form Part 2</div>")它不會觸發,但如果我只添加文本「Form Part 2」,它會將它添加到第一個div後面,但僅作爲文本而不作爲元素。

我在這裏錯過了什麼嗎?它是否與DOM有關?我在IE,Firefox和Chrome中檢查了這種行爲。添加div時它不會觸發。

<script type="text/javascript"> 
     $(document).ready(function(){ 
      $("select#signup_cust_type_select").change(function(){ 
      alert($("#signup_cust_type_select").attr("value")); 
      var id = $("select#signup_cust_type_select option:selected").attr('value'); 
      var zip = $("input#hiddenzip").attr('value'); 
      $.post("http://someip/wp-content/plugins/exec-php/includes/select_type.php", {zip:zip}, function(data){ 
       $("select#signup_utility_select").html(data); 
       }); 
      }); 
      $("select#signup_utility_select").change(function(){ 
      }); 
     }); 
    </script> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
      $("input#submitbtn").click(function(){ 
       $('#form_pt1').after("<p></p><div id='test'>Form Part 2</div>"); 
      }); 
     }); 
    </script>` 

和HTML基本上是:

<div id="form_pt1"> 
    <form id="the_form"> 
     <select box 1> 
     <select box 2> 
    </form> 
</div> 

<div id="new_div_should_go_here"></div> 

如果我修改這樣的代碼它僅適用:

$(document).ready(function(){ 
     $("input#submitbtn").click(function(){ 
      $('#form_pt1').after("Form Part 2"); 
    }); 
}); 

通過移除HTML元素,它增加的話「組成部分2' 。

+17

一個代碼示例值1000字:) –

+1

它在這裏工作得很好,應該工作acc文檔。 http://jsfiddle.net/kBVvp/。你能提供一個樣品小提琴嗎? – PSL

回答

0

我創建了一個示例小提琴,我認爲它正在做你所描述的問題。那就是:

<form id="form_pt1"> 
    <div id="container"> 
     <select id="one"> 
      <option>a</option> 
      <option>b</option> 
     </select> 
     <select id="two"> 
      <option>c</option> 
      <option>d</option> 
     </select> 
    </div> 
</form> 

然後jQuery代碼:

$(function() { 
    $('#one').change(function() { 
     $('<div class="extra"> extra content here </div>').insertAfter($(this)); 
    }); 
}); 

而且here's the link到的jsfiddle。

+0

這是代碼: – cOp

+0

這是我創建的小提琴頁: [鏈接](http://jsfiddle.net/WRGav/3/)。這也是有效的,所以我得出的結論是WordPress頁面上的某些內容導致了這裏的失敗。謝謝所有... – cOp