如何防止在页面加载时触发Onchange

时间:2015-12-15 01:14:44

标签: jquery

虽然不是关于SO的新问题,但是当将参数传递给函数时,我还没有找到一种方法。目前我有这个错误地在页面加载时触发:

$(document).on('change', 'select#advtracks', function() {
        filterMarkers( $(this).val() );
});

我读到的答案是使用语法,没有parenthisis,以防止在页面加载时调用它:

$("#advtracks").on('change', filterMarkers);

但是如何使用参数调用filterMarkers:

$(this).val()

我需要这样做,因为错误调用onload会阻止我的jQuery / Bootstrap datepicker插件在加载时初始化。

谢谢

2 个答案:

答案 0 :(得分:3)

使用jQuery的文档就绪事件

$(function(){
    $(document).on('change', '#advtracks', function() {
        filterMarkers(this.value);
    });
});

$( document ).ready()

其他一些事情。

  1. 您可以简单地使用select#advtracks
  2. ,而不是使用#advtracks选择器
  3. $(this).val()可以替换为this.value

答案 1 :(得分:0)

您无需明确传递参数$(this).val()。在事件期间调用外部函数时,触发事件的元素的范围将在该外部函数内自动显示。

$("#advtracks").on('change', filterMarkers);

function filterMarkers()
{
  alert($(this).val()); // gives the selected value 
}

以下是一个示例:http://fiddle.jshell.net/brxu8w8m/2/