click事件调用方法"trigger"时的复选框值 [英] checkbox value when calling the method 'trigger' with click event

查看:79
本文介绍了click事件调用方法"trigger"时的复选框值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在点击事件中获取正确的当前值以通过触发器进行调用?

How can I can I get the correct current value in the click event to call via a trigger?

HTML:

<input type="checkbox" id="mycheck" />
<br />
<span id="actual-value-inevent"></span>
<br />
<span id="actual-value"></span>
<br />
<button id="view-value">view value</button>
<br />
<button id="call-trigger">call trigger</button>
<br />
<button id="call-trigger-handler">call trigger handler</button>

JavaScript:

Javascript:

$('#mycheck').bind('click', function(ev) {
    $('#actual-value-inevent').html('value in event : ' + $(this).is(':checked'));
});

$('#view-value').bind('click', function(ev) {
    $('#actual-value').html('value view : ' + $('#mycheck').is(':checked'));
});

$('#call-trigger').bind('click', function(ev) {
    $('#mycheck').trigger('click');
    $('#actual-value').html('value post trigger: ' + $('#mycheck').is(':checked'));
});

$('#call-trigger-handler').bind('click', function(ev) {

    $('#mycheck')[0].checked = !$( "input" )[ 0 ].checked;
    $('#mycheck').triggerHandler('click');

    $('#actual-value').html('value post triggerHandler: ' + $('#mycheck').is(':checked'));

});

如果我调用触发(单击)",则复选框的当前值是预单击的.

If I call the "trigger ('click')", in the event the current value of the checkbox is pre-click.

On this blog I find a solution, but I need to solve the problem in the function of the event, not to call the trigger.

示例
带解决方案的示例

通过覆盖触发方法的可能解决方案:

possible solution by overriding the trigger method:

​(function($){

    var triggerOverwrite = $.fn.trigger;
    $.fn.trigger = function (eventType, extraParameters) {

        var stringEvent = '';
        if (typeof eventType == 'string')
            stringEvent = eventType;
        else 
            stringEvent = eventType.type;

        if (this.get(0).tagName.toLowerCase() == 'input' 
            && stringEvent == 'click' && $(this).attr('type') == 'checkbox')
        {
            $(this)[0].checked = !$(this)[0].checked;
            return $(this).triggerHandler(stringEvent, extraParameters);
        }

        return triggerOverwrite.apply(this, arguments);

    };


})(jQuery);​

运行

推荐答案

在单击更改之前,将运行应用于复选框的click事件.

The click event applied to the check box is run before the click makes any changes.

因此,在您的复选框click event中,执行以下操作:

So in your check box click event do the following:

$('#mycheck').bind('click', function(ev) {
    $('#actual-value-inevent').html('value in event : ' + !$(this).is(':checked'));
});

这篇关于click事件调用方法"trigger"时的复选框值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆