Как добавить кнопку динамически с помощью jquery
Моя задача - динамически добавлять кнопку в div. Вот код, который я следую, чтобы добавить кнопку динамически, но не работает, пожалуйста, дайте мне решение для этого
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
function test() {
var r = "$('<input/>').attr({
type: "button",
id: "field"
})";
}
$("body").append(r);
</script>
</head>
<body>
<button onclick="test()">Insert after</button>
</body>
</html>
код для добавления кнопки на div при загрузке страницы, но не работает
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js">
</script>
<script>
function test() {
var r=$('<input/>').attr({
type: "button",
id: "field"
});
test().append("#test");
}
</script>
</head>
<body>
<div id="test"></div>
<button id="insertAfterBtn" onclick="test()">Insert after</button>
</body>
</html>
Ответы
Ответ 1
Ваша строка добавления должна находиться в вашей функции test()
EDIT:
Вот две версии:
Версия 1: прослушиватель jQuery
$(function(){
$('button').on('click',function(){
var r= $('<input type="button" value="new button"/>');
$("body").append(r);
});
});
ДЕМО ЗДЕСЬ
Версия 2: с помощью функции (например, вашего примера)
function createInput(){
var $input = $('<input type="button" value="new button" />');
$input.appendTo($("body"));
}
ДЕМО ЗДЕСЬ
Примечание. Это можно сделать либо с помощью .appendTo
, либо с помощью .append
.
Ответ 2
оператор $("body").append(r)
должен находиться в пределах функции test
, также был потерян "
в методе test
function test() {
var r=$('<input/>').attr({
type: "button",
id: "field",
value: 'new'
});
$("body").append(r);
}
Демо: Fiddle
Обновить
В этом случае попробуйте более jQuery-ish-решение
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">
jQuery(function($){
$('#mybutton').one('click', function(){
var r=$('<input/>').attr({
type: "button",
id: "field",
value: 'new'
});
$("body").append(r);
})
})
</script>
</head>
<body>
<button id="mybutton">Insert after</button>
</body>
</html>
Демо: Plunker
Ответ 3
Попробуйте следующее:
<script type="text/javascript">
function test()
{
if($('input#field').length==0)
{
$('<input type="button" id="field"/>').appendTo('body');
}
}
</script>
Ответ 4
Рабочий планк здесь.
Чтобы добавить новый ввод только один раз, используйте следующий код:
$(document).ready(function()
{
$("#insertAfterBtn").one("click", function(e)
{
var r = $('<input/>', { type: "button", id: "field", value: "I'm a button" });
$("body").append(r);
});
});
[... источник, выделенный здесь...]
<body>
<button id="insertAfterBtn">Insert after</button>
</body>
[... источник, выделенный здесь...]
Чтобы заставить его работать в редакторе w3, скопируйте/вставьте код ниже в раздел "исходный код" внутри редактора w3, а затем нажмите "Отправить код":
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
<button id="insertAfterBtn">Insert only one button after</button>
<div class="myClass"></div>
<div id="myId"></div>
</body>
<script type="text/javascript">
$(document).ready(function()
{
// when dom is ready, call this method to add an input to 'body' tag.
addInputTo($("body"));
// when dom is ready, call this method to add an input to a div with class=myClass
addInputTo($(".myClass"));
// when dom is ready, call this method to add an input to a div with id=myId
addInputTo($("#myId"));
$("#insertAfterBtn").one("click", function(e)
{
var r = $('<input/>', { type: "button", id: "field", value: "I'm a button" });
$("body").append(r);
});
});
function addInputTo(container)
{
var inputToAdd = $("<input/>", { type: "button", id: "field", value: "I was added on page load" });
container.append(inputToAdd);
}
</script>
</html>
Ответ 5
Попробуйте это
function test()
{
$("body").append("<input type='button' id='field' />");
}