1

これは「ほぼ」動作しますhttp://jsfiddle.net/RfWsy/4/

$(document).ready(function() {

  function addRows(label, maxRows, minRows) {
  $('.add-' + label).live('click', function() {
    if ($("." + label + "-group").length < maxRows) {

      var newrow = $('#' + label + '-template')
        .clone().removeAttr('id');

      newrow.insertAfter($(this)
        .closest('.' + label + '-group'))
        .find('.minus').show();

      newrow.find('input').val('');
      newrow.find('select').val('');

    }
  });

  $('.remove-' + label).live('click', function() {
    if ($("." + label + "-group").length > minRows) {
      $(this).closest('.' + label + '-group').remove();
    }
  });
}
  addRows('hs-community-service', 3, 1);
});​

ユーザーは、最大 3 セットのフィールドを追加してから、1 つを除いてすべて削除できます。それは機能しますが、1 つのセットを除いてすべて削除した後 (一番上にある最初のマイナス リンクをクリックして)、追加ボタンをクリックしてみてください。新しいフィールド セットが追加されないことに気付くでしょう。

どんな助けでも大歓迎です。

4

3 に答える 3

2

これは、テンプレートとして使用されているdivを削除したために発生します。HTMLを調べると、それが存在しない
ことがわかります。#hs-comunity-service-template

次のコードを修正します。

$('.remove-' + label).live('click', function() {
    var $element = $("." + label + "-group");
    if ($element.length > minRows) {
        $element.last().remove();
    }
});

デモ

于 2012-08-14T18:42:28.370 に答える
1

行を変更するのはどうですか:

$(this).closest('.' + label + '-group').remove();

に:

$("." + label + "-group").last().remove();

jsFiddle の例

ところで、最新バージョンの jQuery では .live() が廃止され、.on() が推奨されています (これが例で使用されています)。

于 2012-08-14T18:43:54.360 に答える
0

jsfiddle コードを確認した後、たまたま最初のグループであるリンクへのclosestグループを削除していることに気付きました。そのグループの属性を削除しているため、追加するグループのセレクターは適用されなくなりました。コードを修正しました。ここにあります: http://jsfiddle.net/RfWsy/7/minusid

于 2012-08-14T18:44:04.190 に答える