如何对链式事件设置条件

How to put a condition on chained events?

本文关键字:事件 设置 条件      更新时间:2023-09-26

我有三个这样的链式事件:

$("#Id")
.click()
.focus()
.blur()

我想要什么:

var A = 0;
if(A == 0)
execute blur event

我希望只有在满足条件时才执行模糊事件。

尝试检查条件是否在模糊事件中已满,但问题是它执行了模糊功能,该功能基本上什么也没做,但我仍然遇到一个问题,我必须单击两次才能从另一个事件中获得我想要的功能(注意:不是模糊事件的功能)。

我的主要问题:我单击一个文本框,它向我显示了一个日期选择器,当我选择一个日期时,我的模糊事件将执行,因为我离开文本框并从日期选择器中选择一个日期。我的模糊事件有一个执行的回发,但问题是我不希望在我从日期选择器中选择日期时执行它。注意:当我选择一个日期时,我的代码会让我从我选择的日期开始的一周,所以它不是你最喜欢的"日期选择器"功能,这与问题无关,但我认为最好提及它。

如果可以做到这一点,我非常感谢答案。我 any1 想到以下解决方案,我只想说我尝试过,但它没有奏效:内部模糊事件:

return false
return true 

我想我们都学到了艰难的方式,即在使用插件时,最好阅读所有文档,因为它实际上可能包含您可能想要用于更改的内容。

我更详细地阅读了jQuery日期选择器,并了解到它有一个onClose选项,一旦您单击日期选择器,该选项就会执行。所以我基本上所做的是我从blur函数中获取代码并将其放入onClose函数(选项)中,瞧。

法典:

        $('#calWeekF')
            .click(function () { this.select(); })
            .focus(function () { $('#calBtnShow').unbind('click', function () { $.overview.calendar.load() }); })  // De-activate button to prevent duplicate calls to loadCalendar
            .datepicker({
                showWeek: true,
                onSelect: function (date, object) {
                    $.MyProject.calendar.changeDate(new Date(date));
                    $.astra.calendar.changeWeek($("#" + object.id).val());
                    // Add some delay befor activating the button
                    $("#" + object.id).oneTime(200, 'calBtnShow', function () { $('#calBtnShow').click(function () { $.overview.calendar.load() }); });
                },
                onClose: function (date, object){
                    $.astra.calendar.changeWeek($("#" + object.id).val());
                    // Add some delay befor activating the button
                    $("#" + object.id).oneTime(200, 'calBtnShow', function () { $('#calBtnShow').click(function () { $.overview.calendar.load() }); });
                    }
            })

您可以使用 .filter() 方法:

$('#Id').click().focus().filter(function() {
    // var A = 0;
    return (A==0);
}).blur();