首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从onclick事件调用jQuery函数

问从onclick事件调用jQuery函数
EN

Stack Overflow用户
提问于 2013-08-04 13:28:03
回答 3查看 53K关注 0票数 4

由于一些奇怪的需求以及在我们的应用程序中实现jQuery的方式,我不得不通过复选框onclick事件调用jQuery函数。

下面是通过div触发的函数的一个非常好的实现。但是,在我的应用程序中,同样的代码不能工作。

在我的应用程序中,我使用的是jQuery版本1.7.1。我没有收到任何错误,函数根本不触发。我用Chrome调试。当我尝试在onclick中调用它时,它会响应,但会抛回undefined。

代码语言:javascript
复制
<div id="dialog-confirm" title="Select Options">
    <!--I need to call function in onclick event for checkbox below-->
    <input type="checkbox" id="chkall" /> Check/Uncheck
    <br /><br />

    <input type="checkbox" />Option 1<br />
    <input type="checkbox" />Option 2<br />
    <input type="checkbox" />Option 3<br />
    <input type="checkbox" />Option 4<br />
    <input type="checkbox" />Option 5<br />
    <input type="checkbox" />Option 6<br />
    <input type="checkbox" />Option 7
</div>

JS

代码语言:javascript
复制
$(function() {
    $( "#dialog-confirm" ).dialog({
         resizable: false,
         height:350,
         modal: true,
         buttons: {
            "Go": function() {
                $( this ).dialog( "close" );
            },
            Cancel: function() {
                $( this ).dialog( "close" );
            }
        }
    });
});

$(document).ready(function(){ 
    $('#chkall').click(function() {
        // this is the function I need to call
        var opt = $(this).parent().find('input[type=checkbox]');
        opt.prop('checked', $(this).is(':checked') ? true : false);
    });     
});

最后,Fiddle链接

http://jsfiddle.net/uxRGB/1/

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-04 13:38:06

使用change事件而不是click

代码语言:javascript
复制
$('#chkall').change(function() {

如果仍未工作,则可以使用以下方法:

代码语言:javascript
复制
<input type="checkbox" id="chkall" onclick="myfunc()" />

和:

代码语言:javascript
复制
function myfunc () {
        // this is the function I need to call
        var opt = $("#chkall").parent().find('input[type=checkbox]');
        opt.prop('checked', $("#chkall").is(':checked') ? true : false);
    }
票数 5
EN

Stack Overflow用户

发布于 2013-08-04 13:52:35

不确定它是否导致了您所面临的问题,但是您当前的代码在单击它时正在更改"check all“复选框,这在某些浏览器上可能会导致意外的结果。

首先,将代码更改为:

代码语言:javascript
复制
var opt = $(this).parent().find('input[type=checkbox]').not($(this));

这将影响除被单击的复选框之外的所有复选框。

现在假设您想在单击单独的按钮时运行相同的代码,只需:

代码语言:javascript
复制
$("#btnFoo").click(function() {
    $('#chkall').click();
});

更新小提琴。

票数 1
EN

Stack Overflow用户

发布于 2013-08-04 13:31:25

你试过这个吗?

代码语言:javascript
复制
 $('#chkall').trigger('click');

它应该执行附加到复选框的所有处理程序和行为。请参阅:http://api.jquery.com/trigger/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18043444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档