如何用另一个Div替换Div但只有一次

时间:2016-04-18 00:17:06

标签: javascript html ajax

我正在尝试使用下面的代码替换另一个div onclick。它适用于一个实例。但是,问题是当类出现不止一次时(对于我而言)(多个实例),它显然会更改所有实例,因为它们具有相同的类名。 有没有办法让它只更改点击的实例?感谢

HTML

<div id="test"></div>

JavaScript(动态创建HTML)

var html =
 '<form action="test.php" method="get" class="myForm">' +
   '<input type="hidden" name="mID" value="' + this.id + '"/>' +
   '<input type="image" class="send" src="this.image" name ="send" alt="submit"/>' +
 '</form>';

$('div#test').append(html);


$("#test").on('click', '.send', function(e) {
e.preventDefault();

   var $form = $(this).closest('form');

   $.get($form.attr("action"), 
   $form.find(":input").serializeArray(), 
      function(data) {

  $('.myForm').replaceWith('<div class="myForm2"><img src="Icons/PNG/tick 2.png" alt="submit"/></div></div>');

});
});

 $("#test").on('submit', '.myForm', function(e) {
  return false;
});

溶液;

而不是;

  $('.myForm').replaceWith('<div class="myForm2"><img src="Icons/PNG/tick 2.png" alt="submit"/></div></div>');

正确的方式;

  $form.replaceWith('<div class="myForm2"><img src="Icons/PNG/tick 2.png" alt="submit"/></div></div>');

4 个答案:

答案 0 :(得分:2)

您已经大部分时间使用$form = $(this).closest('form');,但出于某种原因,您开始使用$('.myForm')选择所有表单,所以

替换

$('.myForm').replaceWith( ...

$form.replaceWith( ...

答案 1 :(得分:1)

首先,您没有替换div,而是替换表单(使用类.myForm)。由于此表单位于div中,因此当您要更改表单时,可以使用该表单:

$(this).find(".myForm").replaceWith...

答案 2 :(得分:0)

$(".targetClass").click(function(){
  var theDivBeingClicked = $(this);
  //Do something
})

答案 3 :(得分:0)

简单! 我不是JQuery Expert,但我们采用传统方式!

var elements = document.getElementByID('test') 我们会有elemements [0]和elements [1] ....里面有id =“test”的所有内容。但只需要替换第一个元素。

所以,我们的选择落在元素[0]上。

$( 'myForm的')。replaceWith(.....)

取走myForm,并添加你想要替换的元素数组编号,然后它总是在替换的文档中的这个元素。

玩得开心!