【问题标题】:Jquery, click() method on checked radio buttonJquery,选中的单选按钮上的 click() 方法
【发布时间】:2011-08-07 10:19:10
【问题描述】:

我创建了一个巨大的表格。我必须用 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();
        }
});

我想现在我想在这里做什么更清楚了。只是我试图操纵点击功能,所以我不必再次编写所有代码。

有人知道我遇到的这个问题的解决方案吗?如果有人可以在这里帮助我解决我的问题,我将非常高兴。

提前谢谢你。

【问题讨论】:

  • 试试$('input[name=category]:eq(0)').trigger('click');

标签: jquery forms click radio-button


【解决方案1】:

要触发点击事件你需要trigger

编辑:

也试试这个 (jquery namespaced events)

在行动中做$('input[name=category]').bind('click.category', function () {

在控制部分做$('input[name=category]:eq(1)').trigger('click.category');

HTH

【讨论】:

  • 感谢您的回复 3nigma。不幸的是它没有滑动 .frm_options div。
  • 您好 3nigma,再次感谢您的回复,但这仍然没有成功:(
【解决方案2】:

你的代码是按顺序排列的,然后写一个代码来生成它。

【讨论】:

  • 首先控制后面的动作开始,所以是的,它们是按顺序排列的,但我不明白你的意思是“然后编写代码来生成它”。
  • 假设 jquery 代码是 $(ixa1).click(function(){});,然后你有 $(ixa2).click(function(){});,其中 ixa 增加为 ixa3..ixa4 只需运行一个 for 循环来生成带有 html 的代码,相信我像魅力一样工作
  • 对不起,Jean,我对这个主题还很陌生,所以我不能真正清楚地理解你。我只想操纵 click() 事件,所以 $('.frm_options').slideDown();将处理 bind() 事件。
【解决方案3】:
/********************************************************************************************
                                    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();
}

您想将您的呼叫转移到您的.bind 呼叫下方的.click。否则,您在附加事件处理程序之前单击元素。

【讨论】:

  • 非常感谢雷诺斯。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2017-10-18
  • 2011-02-08
  • 2012-06-28
  • 2012-02-29
  • 1970-01-01
  • 2014-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多