jquery ReplaceWith 不适用于 2 个按钮

jquery ReplaceWith not working with 2 buttons

我创建了 2 个按钮,每个按钮都会根据部分视图替换内容,我可以在单击按钮时在页面上加载部分视图,但这只有效一次,例如我单击按钮 1 和加载数据,现在如果我点击按钮 2 它不起作用,我需要返回主页再次点击按钮 2

    <h3>
       <a class="btn btn-warning" id="button1"> Partial View 1</a>
    </h3> 
    <br/>
    <h4>
        <a class="btn btn-warning" id="buttton2"> Partial view 2</a>
    </h4>
   <br/> <br/>
    <div id="testsim">
    </div>




<script type="text/javascript">
$(function () {
    $('#button1').click(function () {
        $.get('@Url.Action("partialview1", "Home")', function (data1) {
            if (data1) {
                $('#testsim').replaceWith(data);
            }
        });
        });
         $('#button2').click(function () {
             $.get('@Url.Action("partialview2", "Home")', function (data2) {
                 if (data2) {
                     $('#testsim').replaceWith(data2);
                 }
        });
        });


});

</script>

我正在尝试实现按钮点击以在两个按钮之间切换,每次按钮点击都应该替换 div 标签中的内容。任何帮助将不胜感激。

我认为问题是因为 replaceWith() 替换了元素本身,即 outerHTML-

$(function() {
  let $html, current;
  $('#button1').click(function() {
    /* $.get('@Url.Action("partialview1", "Home")', function(data1) {
       if (data1) {
         $('#testsim').replaceWith(data);
       }
     });*/
    current = `button 1 was <em>clicked</em>`;
    $html = `<div><strong>${current}</strong></div>`;
    $('#testsim').replaceWith($html);
  });

  $('#button2').click(function() {
    /*$.get('@Url.Action("partialview2", "Home")', function(data2) {
      if (data2) {
        $('#testsim').replaceWith(data2);
      }
    });*/
    current = `button 2 was <strong>clicked</strong>`;
    $html = `<div><em>${current}</em></div>`;
    $('#testsim').replaceWith($html);
  });


});
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h3>
  <a class="btn btn-warning" id="button1"> Partial View 1</a>
</h3>
<br/>
<h4>
  <a class="btn btn-warning" id="button2"> Partial view 2</a>
</h4>
<br/> <br/>
<div id="testsim" style="background: aquamarine; height: 200px">
</div>

如您所见,元素的样式在替换后消失了。如果你想执行这个操作,那么你应该使用 html() 来代替 innerHTML-

$(function() {
  let $html, current;
  $('#button1').click(function() {
    /* $.get('@Url.Action("partialview1", "Home")', function(data1) {
       if (data1) {
         $('#testsim').replaceWith(data);
       }
     });*/
    current = `button 1 was <em>clicked</em>`;
    $html = `<div><strong>${current}</strong></div>`;
    $('#testsim').html($html);
  });

  $('#button2').click(function() {
    /*$.get('@Url.Action("partialview2", "Home")', function(data2) {
      if (data2) {
        $('#testsim').replaceWith(data2);
      }
    });*/
    current = `button 2 was <strong>clicked</strong>`;
    $html = `<div><em>${current}</em></div>`;
    $('#testsim').html($html);
  });
});
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<h3>
  <a class="btn btn-warning" id="button1"> Partial View 1</a>
</h3>
<br/>
<h4>
  <a class="btn btn-warning" id="button2"> Partial view 2</a>
</h4>
<br/> <br/>
<div id="testsim" style="background: aquamarine; height: 200px">
</div>

希望对您有所帮助。