Javascript 多次单击事件触发

Javascript 多次单击事件触发,javascript,jquery,jquery-plugins,jquery-events,Javascript,Jquery,Jquery Plugins,Jquery Events,我正在学习为自己编写一个插件,但代码中有些奇怪的东西。我有一个重置按钮,当我点击它时,它的运行次数与我拥有的输入元素数相同 我的代码: HTML: <div id="container"> <div id="createCSVWrap"> <fieldset> <legend> Create the CVS File </legend> <div class

我正在学习为自己编写一个插件,但代码中有些奇怪的东西。我有一个重置按钮,当我点击它时,它的运行次数与我拥有的输入元素数相同

我的代码:

HTML:

<div id="container">
    <div id="createCSVWrap">
        <fieldset>
            <legend> Create the CVS File  </legend>
            <div class="dateWrap">
                <label> 开始时间: </label>

                <div style="float:right">
                    <input id="startTime" name="startTime" type="text" value="13:37:06" />

                </div>
            </div>


        </fieldset>
    </div>

    <input id="f" name="fck"  value="18:27:56" />
    <input class="tt" name="tt" value="02:07:56" />
    <input name="ok" class="ok"  value="08:07:56" />

</div>

我想我看到了问题所在。这与以下代码有关:

$(this).focus(function() {
    _input = $(this); 
    originalTime = '';
    intial();
});

function intial() {
    showSetTime();
    setTimePickerPosition();
    $('#timeReset').click(resetTime);
}
这基本上意味着,每当用户关注文本框时,另一个单击处理程序将连接到重置按钮,从而多次触发同一事件

您需要做的是解除旧事件的绑定,然后使用解除绑定事件重新附加新事件


看到它在这里工作了吗:

我想我看到了这里的问题。这与以下代码有关:

$(this).focus(function() {
    _input = $(this); 
    originalTime = '';
    intial();
});

function intial() {
    showSetTime();
    setTimePickerPosition();
    $('#timeReset').click(resetTime);
}
这基本上意味着,每当用户关注文本框时,另一个单击处理程序将连接到重置按钮,从而多次触发同一事件

您需要做的是解除旧事件的绑定,然后使用解除绑定事件重新附加新事件

看到它在这里工作:

$(this).focus(function() {
    _input = $(this); 
    originalTime = '';
    intial();
});

function intial() {
    showSetTime();
    setTimePickerPosition();
    $('#timeReset').click(resetTime);
}
$('#timeReset').unbind('click').click(resetTime);