WedX - журнал о программировании и компьютерных науках

Создание повторно используемой функции jQuery

Вместо того, чтобы каждый раз переписывать огромный блок кода, я пытаюсь включить функции в свою работу, но у меня возникают проблемы с тем, чтобы это работало.

По сути, у меня есть выбор радиокнопок, и я выполняю некоторые действия каждый раз, когда нажимается радиокнопка. (Я на самом деле загружаю iFrame). Тем не менее, мне нужно сделать iFrame SRC разными для каждой кнопки-переключателя, так как я могу обеспечить это в рамках функции?

Функция:

jQuery.fn.switchPreview = function () {
$('.liveDemoFrame').remove();
$('.liveDemoHand').append('<iframe class="liveDemoFrame" src="themes/src/' + themeName + '/" width="100%" height="300" scrolling="no"><p>Your browser does not support iframes.</p></iframe>');
$('.liveDemoHand').append('<div class="switchPreview"><div class="loadingPreview"></div></div>');
$('.liveDemoFrame').load(function() {
    $('.switchPreview').fadeOut();  
    $('.switchPreview').remove();   
    $('.liveDemoFrame').fadeIn();
});
return this;
}

В iFrame SRC у меня есть переменная с именем themeName. Мне нужно, чтобы это как-то изменилось для каждого переключателя. Вы можете видеть в коде, который вызывает функцию, я каждый раз пытался объявить переменную, но это все равно дает мне неопределенную ошибку.

Код, который его вызывает:

$('#cTheme1').click(function () { 
    $('input:radio[name=mgChooseTheme]:nth(1)').attr('checked',true); 
            var themeName = 'theme1';
            $('.liveDemoFrame').switchPreview();
});

$('#cTheme2').click(function () { 
    $('input:radio[name=mgChooseTheme]:nth(2)').attr('checked',true); 
            var themeName = 'theme2';
            $('.liveDemoFrame').switchPreview();
});

$('#cTheme3').click(function () { 
    $('input:radio[name=mgChooseTheme]:nth(3)').attr('checked',true); 
            var themeName = 'theme3';
            $('.liveDemoFrame').switchPreview();
});

Я уверен, что это что-то очень простое, но я все еще учусь, поэтому мелочи всегда сбивают меня с толку!


  • Возможно, используя метод data() в jQuery -› api.jquery.com/jQuery.data затем сохранить URL-адреса в переключателях в качестве данных? 16.11.2011
  • Да, очень просто, просто передайте переменную themeName в метод switchPreview(). 16.11.2011
  • Вы можете использовать attr для изменения src iframe? или я что-то упускаю? Я опубликую это на JSFiddle. 16.11.2011
  • Кроме того, поскольку ваша функция switchPreview() не является динамической, как при использовании «этого», вам действительно следует использовать обычный синтаксис JS, нет причин делать ее функцией jQuery, если все ваши селекторы и переменные предопределены 16.11.2011

Ответы:


1

Передайте имя темы в качестве аргумента функции switchPreview.

-Измените первую строку функции на:

jQuery.fn.switchPreview = function (themeName) {

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

$('.liveDemoFrame').switchPreview(themeName);
16.11.2011
  • Работает отлично. Большое спасибо. 16.11.2011

  • 2

    Почему бы просто не обновить тег src iframe...

    $('#cTheme1').click(function () { 
        $('input:radio[name=mgChooseTheme]:nth(1)').attr('checked',true); 
                $('#liveDemoFrame').attr('src', <the new url>);
    });
    

    Тогда ваш iframe уже должен быть частью страницы:

    <iframe id='liveDemoFrame' src='<default page>'></iframe>
    

    я заметил, что вы используете атрибут CLASS в своем iFrame и получаете к нему доступ с помощью этого - вам действительно нужно подумать об использовании атрибута ID, если вы просто хотите сослаться на один объект. (как в моем примере выше)

    16.11.2011
    Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]