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

5

虽然这不是一个SO上的新问题,但我没有找到一种在函数参数传递时实现它的方法。目前我有以下代码,在页面加载时错误地触发:

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

我看到的答案是使用语法来防止在页面加载时调用它,而不需要括号:

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

然而,我该如何使用参数调用filterMarkers函数?
$(this).val()

我需要这样做,因为错误的onload调用阻止了我的jQuery/Bootstrap日期选择器插件在加载时初始化。
谢谢。

等页面加载完成后再尝试附加事件监听器。 - Nick Zuber
我该如何使用jQuery实现这个功能? - Flim Flam
2个回答

6
使用jQuery的文档就绪事件
$(function(){
    $(document).on('change', '#advtracks', function() {
        filterMarkers(this.value);
    });
});

$( document ).ready()

还有几点需要注意:

  1. 使用选择器时,可以用简洁的 #advtracks 代替 select#advtracks
  2. $(this).val() 可以改成 this.value

1
是的!!非常感谢,两位都解决了我的问题 - 我会记住这个问题,因为它一直在困扰我 - 太棒了! - Flim Flam
兄弟,你救了我一命...我已经折磨自己两天了...你是我的天使...我的情绪很激动。谢谢你...愿上帝保佑你。 - saktiprasad swain

0

您不需要显式传递参数$(this).val()。当您在事件期间调用外部函数时,触发事件的元素范围会自动在该外部函数内可见。

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

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

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

确实 - 我会记住这个事实,尽管我通常使用老派的方法,因为我经常不仅仅是获取val() - 所以更方便 - 但拥有更多的知识也没有错 - 干杯 - Flim Flam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接