2010-05-04 80 views
0

这里有一个小的jQuery函数,我想要做什么点击复选框的时候,但我有我的知识基本空白:触发jQuery的事件函数

如何注册这使得它与复选框交易当页面加载时已经点击了吗?

编辑:对不起,那些谁已经回答了这个问题,但我已经编辑这使其更清晰)

$(document).ready(function() { 
    $('fieldset input:checkbox').click(function() { 
    if ($(this).attr('name') == 'foo') { 
     if ($(this).attr('checked')) { 
     // hide checkbox 'bar' 
     } 
     else { 
     // show checkbox 'bar' 
     } 
    } 
    } 
}); 

如果我使用.trigger(“点击”),它在页面加载时点击(或取消点击)所有框。

我能想到的几个方法可以做到这一点,将涉及重复代码的部分,但我只知道的jQuery已经为这个优雅的答案...

+3

不应该你要检查函数中是否存在$(this).is(':checked')'? – SLaks 2010-05-04 13:16:33

+0

我认为这需要一点阐述 - 你能否提供一个工作示例或扩展你希望jQuery如何处理预先选中的复选框? – Sam 2010-05-04 13:28:03

回答

2
$(document).ready(function() { 
    $('fieldset input:checkbox').click(handleClick) 
    .filter(':checked').each(handleClick); 
}); 

function handleClick(){ 
    if ($(this).attr('name') == 'foo') { 
     // hide checkbox 'bar' 
    } 
    else { 
     // show checkbox 'bar' 
    } 
} 

您可能需要添加一些逻辑在handleClick功能,以确保你知道什么状态的复选框。您可以做到这一点通过调用$(this).is(':checked');

+1

+1给你完全理解? – 2010-05-04 13:19:10

+0

如果这是他想做的事情,他的代码将不会做他想要的东西,如果用户_unchecks_复选框 – SLaks 2010-05-04 13:22:12

+0

@SLaks非常真实,更新我的答案指出这一事实并告诉他如何检查状态 – PetersenDidIt 2010-05-04 13:31:58

1

你可以把代码放到一个功能并立即调用该函数。

例如:

function handleCheckbox() { 
    if ($(this).attr('name') == 'foo') { 
     // hide checkbox 'bar' 
    } 
    else { 
     // show checkbox 'bar' 
    } 
} 

$(function() { 
    $('fieldset :checkbox').each(handleCheckbox).click(handleCheckbox); 
}); 
+0

这将调用所有人的点击功能,如果他们被选中则切换。他希望它只能在检查负载时触发。 – PetersenDidIt 2010-05-04 13:18:11

+0

@petersendidit:如果这就是他想要的,他需要在处理程序中调用'$(this).is(':checked')'。 (如果用户点击复选框两次) – SLaks 2010-05-04 13:20:12

+0

你应该避免使用'$(function(){...',它在jQuery 1.4中不受支持 – Sam 2010-05-04 13:22:39

0

这样吗?

$(function() { 
    $('fieldset input:checkbox').click(function() { 
    if ($(this).attr('name') == 'foo') { 
     // hide checkbox 'bar' 
    } 
    else { 
     // show checkbox 'bar' 
    } 
    }).filter(":checked").click(); 
}) 

看到另一个答案,我不认为在上述过程之后是你想要的。 +1给另一个人。

:-)