使用JavaScript / jQuery在按钮点击时动态添加div

3
在JavaScript/jQuery中,如何在按钮单击时动态添加div?我希望所有具有“listing listing_ad job”类的div格式都能被保留。这是我试过的jQuery代码。

$('#btnAddtoList').click(function(){
 var newDiv = $('<div class="listing listing_ad job"><h4><a>Some text</a></h4> </div>');
  //newDiv.style.background = "#000";
  document.body.appendChild(newDiv);
});
.listing {
  border-bottom: 1px solid #ddd;
  float: left;
  padding: 0 0 5px;
  position: relative;
  width: 559px;
}

.listing:hover {
  background: #f5f5f5 none repeat scroll 0 0;
  border-bottom: 1px solid #ddd;
  cursor: wait;
}

a:hover {
  color: #ff5050;
}

.subtitle {
  width: 430px;
  font-weight: normal;
  font-size: 12px;
  font-family: Arial;
  color: #7f7f7f;
}

.info {
  float: left;
  margin: 10px 15px 5px;
  min-width: 500px;
  
  clear: both;
  color: #7f7f7f;
  margin: 15px 44px 15px 0;
  overflow: hidden;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btnAddtoList">
Add to list
</button>

<div class="listing listing_ad job">
  <h4>
   <a>
  Excellent Opportunity For Internship at Diamond
  </a>
  </h4>
  <div class="subtitle">
  Lahore, Punjab
  </div>
  <div class="info">
  This is Info / Description.
  </div>
</div>
<!-- ************************ -->

<div class="listing listing_ad job">
  <h4>
  <!-- Src: http://jobs.mitula.pk/internship-program-lahore-jobs -->
  <a>
  Excellent Opportunity For Internship at Diamond
  </a>
  </h4>
  <div class="subtitle">
  Lahore, Punjab
  </div>
  <div class="info">
  This is Info / Description.
  </div>
</div>

Jsfiddle: http://jsfiddle.net/mr4rngbL/3/


什么样的东西? - 2pha
@2pha...我在发布问题时遇到了困难。 - Asad
3个回答

3
这里提供纯JavaScript解决方案。

function addDiv(parent_div, content, attrs) {
  var div = document.createElement('div');
  var parent = document.getElementById(parent_div);

  for (var key in attrs) {
    if (attrs.hasOwnProperty(key)) {
      div.setAttribute(key, attrs[key]);
    }
  }
  div.innerHTML = content;
  if (parent) {
    parent.appendChild(div);
  }
}

var button = document.getElementsByTagName('button')[0];
if (button) {
  button.addEventListener('click', function() {
    // change dynamically your new div
    addDiv('parent', 'hi', {
      'class': 'someclass someclass',
      'data-attr': 'attr'
    });
  });
}
<button>Add Div</button>
<div id="parent">

</div>


3

是的,您可以通过将jQuery添加到文档的脚本中,并将代码包装在document.ready中来实现。

$(function() {
    $('#btnAddtoList').click(function(){
        var newDiv = $('<div class="listing listing_ad job"><h4><a>Some text</a></h4> </div>');
      //newDiv.style.background = "#000";
       $('body').append(newDiv);
    });
});

以下是与您的评论相关的示例代码:http://jsfiddle.net/mr4rngbL/5/

以下是根据您的评论所要求的示例代码:http://jsfiddle.net/mr4rngbL/6/

以下是您在评论中提出的最后一个示例代码:http://jsfiddle.net/mr4rngbL/7/


如果我在jsfiddle中添加文本框,那么如何在按钮点击时将文本框的值放入而不是“some text”?JavaScript / jQuery代码 - Asad
如果我想通过文本框动态添加div class="subtitle"和div class="info"标签,该怎么办? - Asad
@Asad 添加了另一个动态设置类的示例,但请避免提出额外的请求,而是发布一个新问题。 - Alon Eitan

2

是的,您可以在jQuery中轻松地通过按钮单击添加一个div。首先,设置点击监听器:

$('button').on('click', addDiv);

接下来,创建一个函数来添加div(这里是将div添加到类名为 container 的元素中):

function addDiv() {
    $('.container').append('<div>').addClass('listing listing_ad job');
}

我希望这对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接