jQuery clone () проблема - PullRequest
       5

jQuery clone () проблема

0 голосов
/ 20 апреля 2011
<script>
function _addcategory() {
    $("#category_div").clone().insertAfter($("#category_div"));
}
</script>
<label for="category">Category</label>
<div id="category_div" style="margin-bottom:5px;">
<select id="category" name="category[]">
<option value="0">None</option>
<option value="3">Item 1</option>
<option value="4">Item 2</option>
<option value="1">Item 3</option>
</select><script>document.write("<input id=\"addrow\" onclick=\"_addcategory();\" style=\"margin-left:5px;\" type=\"button\" value=\"+\" />");</script>
</div>

Когда я нажал на кнопку, страница стала пустой, кроме кнопки вместо ее клонирования.Это ошибка или моя ошибка?Я часами гуглял, но не смог найти решение.Кто-нибудь знает почему?

1 Ответ

2 голосов
/ 20 апреля 2011

Поскольку вы используете document.write(). Не.


Есть и много других проблем с вашим кодом. Вот как это сделать:

HTML

<label for="category">Category</label>
<div class="category_div" style="margin-bottom:5px;">
    <select id="category" name="category[]">
        <option value="0">None</option>
        <option value="3">Item 1</option>
        <option value="4">Item 2</option>
        <option value="1">Item 3</option>
    </select>
</div>

<input id="addrow" style="margin-left:5px;" type="button" value="+" />

JavaScript

$(function() {
    function _addCategory() {
        var $categoryDiv = $('div.category_div').last();
        $categoryDiv.clone().insertAfter($categoryDiv);
    }

    $('#addrow').click(_addCategory);
});

http://jsfiddle.net/mattball/zYEUY/

Примечания

  • document.write(): просто не используйте его.
  • Идентификаторы элементов должны быть уникальными. Быстрое решение состоит в том, чтобы изменить id="category_div" на class="category_div" и соответственно изменить JS.
  • Вы уже используете jQuery, поэтому нет оправдания тому, что вы не пишете ненавязчивый JavaScript .
  • Неправильная капитализация: ваш исходный код использовал _addcategory вместо _addCategory, поэтому обратный вызов onclick был undefined.
...