为什么.on不能在我的$(document).ready()函数中使用?

时间:2012-11-19 04:55:36

标签: javascript jquery

可以在

查看该页面

http://cistrome.org/cps/seqconfig?did=2693

在Firebugs中加载时,它会给我这个错误:

TypeError: $(".open_gene").on is not a function
[Break On This Error]   

$(".open_gene").on('change', function(event) {

但是,如果我在Firebug的控制台中输入这个表达式,它可以被评估为一个没有任何问题的函数:

>>> $(".open_gene").on
function()

我想知道造成这个问题的原因是什么。 有没有人有这个想法?谢谢!

3 个答案:

答案 0 :(得分:5)

.on()可从jQuery v1.7获得,您的网站版本为1.6.4

修改

在您的html中加载版本1.6.4然后在javascript中加载版本1.7.2,但您的bindingssites.js在版本1.7.2之前加载,因此.on()当时不可用但是稍后在控制台中。我建议在第一个jQuery脚本

之后放置你的jquery后备加载器
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script>
    function check_jquery() {
        //console.log('jquery');
        var jquery = window.$ || window.JQuery;
        //console.log('jquery: '+(jquery?(jquery.fn?jquery.fn.jquery:'null'):'null'));
        if (jquery === undefined || jquery.fn.jquery !== '1.7.2') {
            mygene.loadfile(mygene.url_root + 'js/jquery-1.7.2.min.js', 'js', check_jquery_ui);
            //console.log('jquery: loaded');
        } else {
            check_jquery_ui();
        }

    };
    check_jquery();
</script>

答案 1 :(得分:2)

你正在加载一个非常旧版本的jQuery(1.6.4)。直到1.7才添加on()

答案 2 :(得分:1)

您正在加载两个版本的jQuery:1.6.4和1.7.2。你在1.6.4之后加载1.7.2。

在它失败的情况下使用1.6.4但稍后当你打开Firebug时它会使用后来加载的1.7.2。