jquery change()警报一次点击会触发6次?

时间:2012-01-23 16:39:42

标签: jquery

jQuery(document).ready(function($)
{
    $('.c5sliderSelect').change(function() 
    {
        alert('change clicked');
    });
});

当我更改选择列表项时,我收到6个警报。不知道为什么。我只在标记中有一个带有此类名的元素,而选择列表有10个选项。

为什么警报会针对单个更改事件触发多次?

标记:

<select 
    class="c5sliderSelect" 
    title="Note: only categories which have posts assigned are listed here"> 
    <option value="">Custom Text</option> 
    <option value="164">Blog (10)</option>
    <option value="8">Digital Cameras (3)</option>
    <option value="9">GPS Systems (1)</option>
    <option value="7">Healthy Herbal Teas (1)</option>
    <option value="93">hidden (1)</option>
    <option value="20">iPhone 4s (2)</option>
    <option value="5">Samsung Galaxy (5)</option>
    <option value="4">Smart Phones (5)</option>
    <option value="1">Uncategorized (7)</option>
</select>

我在这里要做的是在所选项目的值为“”

时隐藏不相关的div

4 个答案:

答案 0 :(得分:3)

尝试使用alert以外的其他内容。 alert对焦点产生了可怕的影响,当然change事件与focus有关。请尝试console.log或类似。

例如,this live example使用您的标记只会显示一个change事件被触发。

答案 1 :(得分:1)

描述

使用click()绑定来捕获点击次数并使用$jQuery.noConflict()来保证不与其他JavaScript库发生冲突。

样品

$(document).ready(function()
{
    $('.c5sliderSelect').click(function() 
    {
        alert('change clicked');
    });
});

$.noConflict();
jQuery(document).ready(function()
{
    jQuery('.c5sliderSelect').click(function() 
    {
        alert('change clicked');
    });
});

更多信息

更新

为了澄清一点,使用click()是一个鼠标事件,它不会使用键盘捕获更改。

答案 2 :(得分:1)

这意味着对于您的jQuery脚本,元素存在6次。您可能已经初始化了6次元素,或者在您的情况下,某些脚本更改了元素$('。c5sliderSelect'),但上述脚本不足以确定它。

答案 3 :(得分:0)

如果您想使用点击功能:

$('.c5sliderSelect').click(function() 

更改可能不是您正在寻找的正确事件......