Jquery, метод click () на выбранном переключателе - PullRequest
2 голосов
/ 17 апреля 2011

Я создал огромную форму.Я должен сделать много действий с Jquery.Я завершил ту часть, где я могу совершать действия.Настало время для элементов управления.

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

Я уже написал более 300 строк Jquery только для действий.Сейчас я должен делать элементы управления, но я не хочу копировать, вставлять и редактировать более 300 строк кода Jquery, поэтому я попытался пойти ленивым путем, но это не сработало.

// Category
if ($('input[name=category]:checked').val() == 1) {
    $('input[name=category]:eq(1)').click();
}
// Product
else if ($('input[name=category]:checked').val() == 0) {
    $('input[name=category]:eq(0)').click();
}
// Undefined Value
else {
    $('.frm_options').slideUp();
}

У меня нетИдея почему код выше не работает.Я мог видеть, что он изменяет проверенный атрибут элемента радио-кнопки, но нет, он не щелкает, поэтому он отображает остальную часть формы.

/********************************************************************************************
                                    ACTIONS
********************************************************************************************/
$('input[name=category]').bind('click', function () {
    // Show rest of the form
    $('.frm_options').slideDown();

    // Product Specific
    if ($(this).val() == 0) {
        $('.frm_category_0').fadeIn(1000);
        $('.frm_category_1').fadeOut(1000);
    }
    // Category Specific
    else if ($(this).val () == 1) {
        $('.frm_category_1').fadeIn(1000);
        $('.frm_category_0').fadeOut(1000);
        }
        // Undefined Value, Hide everything
        else{
                $('.frm_options').slideUp();
                $('.frm_category_1').slideUp();
                $('.frm_category_0').slideUp();
        }
});

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

Кто-нибудь знает решение этой проблемы, с которой я столкнулся?Я буду очень рад, если кто-нибудь может помочь мне с моей проблемой здесь.

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 18 апреля 2011
/********************************************************************************************
                                    ACTIONS
********************************************************************************************/
$('input[name=category]').bind('click', function () {
    // Show rest of the form
    $('.frm_options').slideDown();

    // Product Specific
    if ($(this).val() == 0) {
        $('.frm_category_0').fadeIn(1000);
        $('.frm_category_1').fadeOut(1000);
    }
    // Category Specific
    else if ($(this).val () == 1) {
        $('.frm_category_1').fadeIn(1000);
        $('.frm_category_0').fadeOut(1000);
        }
        // Undefined Value, Hide everything
        else{
                $('.frm_options').slideUp();
                $('.frm_category_1').slideUp();
                $('.frm_category_0').slideUp();
        }
});


// Category
if ($('input.category:checked').val() == 1) {
    $('input.category:eq(1)').click();
}
// Product
else if ($('input.category:checked').val() == 0) {
    $('input.category:eq(0)').click();
}
// Undefined Value
else {
    $('.frm_options').slideUp();
}// Category
if ($('input[name=category]:checked').val() == 1) {
    $('input[name=category]:eq(1)').click();
}
// Product
else if ($('input[name=category]:checked').val() == 0) {
    $('input[name=category]:eq(0)').click();
}
// Undefined Value
else {
    $('.frm_options').slideUp();
}

Вы хотите переместить ваши вызовы на .click ниже вашего .bind вызова.В противном случае вы нажимаете на элементы перед тем, как присоединить обработчики событий.

0 голосов
/ 18 апреля 2011

Является ли ваш код в последовательном порядке, а затем написать код для его генерации.

0 голосов
/ 17 апреля 2011

для запуска события клика вам нужно вызвать это

EDIT:

также попробуйте это ( события пространства имен jquery )

в действиях $('input[name=category]').bind('click.category', function () {

и в части управления сделать $('input[name=category]:eq(1)').trigger('click.category');

НТН

...