клон jQuery копирует идентификаторы

Наконец, некоторые предлагают обернуть список в чем-то:

Это правильный путь. «Безусловно многословие» - это плохой способ взглянуть на это. Он имеет явное значение, когда вы пишете my_team.Players.Count. Вы хотите подсчитать игроков.

my_team.Count

.. ничего не значит. Считайте что?

Команда не является списком - состоят не только из списка игроков.

Если вы действительно обеспокоены тем, что он слишком многословный, вы всегда можете выставлять свойства из команда:

public int PlayerCount {
    get {
        return Players.Count;
    }
}

.. которая становится:

my_team.PlayerCount

Теперь это имеет смысл и придерживается Закона Деметры .

Вы также должны рассмотреть возможность соблюдения принципа повторного использования Composite . Наследуя от List, вы говорите, что команда - это список игроков и выставляя из нее ненужные методы. Это неверно. Как вы сказали, команда - это больше, чем список игроков: у нее есть имя, менеджеры, члены совета, тренеры, медицинский персонал, зарплата и т. Д. Если ваш класс команды содержит список игроков, вы «У команды есть список игроков», но у нее также могут быть и другие вещи.

52
задан fragilewindows 10 October 2016 в 19:32
поделиться

4 ответа

При необходимости в способе сослаться на элементы списка после клонирования их необходимо использовать классы, не идентификаторы. Измените весь идентификатор = "..." к классу = "..."

, Если Вы имеете дело с унаследованным кодом или чем-то и не можете изменить идентификаторы на классы, необходимо удалить идентификационные атрибуты перед добавлением.

$("#MainConfig").clone(false).find("*").removeAttr("id").appendTo($("#smallConfig"));

Просто знать, что у Вас нет способа больше ссылаться на отдельные объекты.

39
ответ дан Crescent Fresh 7 November 2019 в 09:25
поделиться
$("#MainConfig")
    .clone(false)
    .find("ul,li")
    .removeAttr("id")
    .appendTo($("#smallConfig"));

Примеряют это для размера.:)

[Редактирование], Фиксированное для комментария redsquare.

15
ответ дан Andrew Whitaker 7 November 2019 в 09:25
поделиться

Если у Вас будет несколько подобных объектов на странице, лучше использовать классы, не идентификаторы. Тем путем можно применить стили к uls в различных контейнерных идентификаторах.

0
ответ дан Danita 7 November 2019 в 09:25
поделиться

Если я вас правильно понимаю, это то, что вам нужно:

jQuery.fn.updateChanges = function(){

   this.bind('blur',function(){    

      var data = {};
      data[$(this).attr("name")] = $(this).val();

      $.post('/ajax/updateValue.php',
        data,
        function(ret){
           if (ret=='success') alert("all good!");
        }    
   }    
}

Ваша основная проблема заключалась в попытке использовать динамическое значение с использованием обозначения литерала объекта, чего вы не можете сделать, не вернувшись к очень плохому практики (например, использование eval (), где eval () не принадлежит;).

var myObj = { 'n1': 'v1' };

эквивалентно: $ ("# детали"). clone (). attr ('id', 'details_clone'). after ("h1"). show ();

6
ответ дан 7 November 2019 в 09:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: