#jquery #jquery-ui #jquery-mobile #jquery-mobile-flipswitch
#jquery #jquery-ui #jquery-mobile #jquery-mobile-flipswitch
Вопрос:
Я упростил свою проблему до этого:
<div id='outer'>
<div id='inner'>
<label for='flipInput'> Active: </label>
<input name='flipInput' data-role='flipswitch' />
</div>
</div>
И помимо включения этих библиотек, эта инструкция скрипта:
$('#inner').remove();
https://jsfiddle.net/Lenoxus/f1oo4LqL/
Эффект заключается в том, чтобы РАЗВЕРНУТЬ этот «внутренний» div, а не удалять его вместе с дочерними элементами, как я хочу / ожидаю. Этого не произойдет, если на входе нет data-role=’flipswitch’ , который я действительно хочу сохранить. (другими словами, наличие этой роли данных приводит к тому, что метка и ввод сохраняются в процессе удаления, чего они не должны.) Я схожу с ума, пытаясь понять, как этому противостоять.
Комментарии:
1. @AWolff опубликуйте это в качестве ответа — мой первый комментарий был мусором 🙂
2. Я не уверен, что вы подразумеваете под «разворачиванием», но я предполагаю, что вы хотите удалить
#inner
, но сохранить содержимое элемента?
Ответ №1:
Я бы посоветовал вытащить нужные вам элементы label
и input
, уничтожив созданные flipswitch
, удалить div
, добавить элементы обратно и инициализировать flipswitch
их снова.
Рабочий пример: https://jsfiddle.net/Twisty/2trwL715 /
jQuery
$(function() {
var label = $("#inner label");
var flip = $("#inner input[data-role='flipswitch']").clone();
var parent = $("#inner").parent();
$("#inner input[data-role='flipswitch']").flipswitch( "destroy" );
$("#inner").remove();
parent.append(flip);
flip.flipswitch();
});
Комментарии:
1. При выполнении некоторого тестирования при запуске я
$("#inner input[data-role='flipswitch']").flipswitch( "destroy" );
получаю сообщение об ошибкеTypeError: this.removeClass is not a function
ajax.googleapis.com/ajax/libs/jquerymobile/1.4.5 /… (строка 6, col 14872)2. Кажется, я очень плохо объясняю это. Я ХОЧУ уничтожить элемент. В настоящее время существует ошибочное поведение, которое разворачивает, а не уничтожает. Несмотря ни на что, я не могу удалить чертов flipswitch или его сопутствующую метку — что-то в jQuery UI «спасает» их от удаления и добавляет обратно.
3. @Lenoxus вы хотели бы использовать
$(selector).flipswitch("destroy")
для удаления всех добавленных элементов JQM. Тогда вы могли бы запустить$(selector).remove()
. Но я думаю, что вы сообщаете о том, что дочерние элементы остаются после выполнения удаления. Правильно?4. Да. И это приводит к ошибке, о которой вы упоминали ранее.
5. Похоже, я, возможно, нашел решение. $(‘#input *’).remove()