Объект данных в jquery не определен после replaceWith - PullRequest
1 голос
/ 29 февраля 2012

Я кодирую плагин jquery, и мне нужны некоторые кнопки, чтобы иметь двойное состояние (например, редактировать / сохранять) Я получаю эту информацию через JSON и вставляю ее в кнопку как:

node
    - current //['primary'/'secondary']
    - primary // some info
    - secondary // some info

Как только я нажимаю кнопку, я попадаю сюда, чтобы изменить действие. Поэтому я хочу заменить всю ссылку через шаблон и информацию, которую я получаю из button.data. Поскольку я хочу заменить не только innerHtml, но и внешний, я должен использовать ' replaceWith '. Затем я копирую ' data ' на новую кнопку и (в идеале) удаляю старую.

changeButtonAction : function(button, selector){
      var node = button.data('node'),
           info;

      if(node.current == 'primary'){
           info = node.secondary;
           node.current = 'secondary';
      }else{
           info = node.primary;
           node.current = 'primary';
      }

      button.replaceWith(multiReplace(OPERATION_ITEM, info, true));
      button.data('node', $.extend( true, {}, node));

      ... //bit of interaction
 }

Дело в том: После того, как функция Я теряю новые данные , как говорится, что undefined . Может ли кто-нибудь помочь? Использование replaceWith не является обязательным, поэтому, если вы найдете другое решение, все будет в порядке.

1 Ответ

0 голосов
/ 01 марта 2012

Хорошо, я решил это.

Благодаря Диоду я попытался воспроизвести его в jsfiddle.Функция щелчка не работает, поэтому я немного изменяю свой код.Вместо замены на текст:

button.replaceWith(multiReplace(OPERATION_ITEM, info, true));
button.data('node', $.extend( true, {}, node));

Сделайте это с объектом:

var button2 = $(multiReplace(OPERATION_ITEM, info, true))
    .data('node', $.extend( true, {}, node));
button.replaceWith(button2);

Вы можете увидеть его в действии: http://jsfiddle.net/p8vMR/9/

...