jQuery onclick函数:Undefined不是函数

时间:2015-03-13 15:18:02

标签: javascript jquery function undefined

编辑:我想这部分是我对Drupal缺乏经验的问题。我在site.info中添加了一个javascript文件,以便将其添加到每个页面。这是包含的所有文件:

(function ($){
$("#ctl00_btnSearch001").on("click", function(){
       var searchVal = $("#ctl00_txtSearch").val();
       window.location.href = "http://www.mywebsite.org/search/?sa=Search&q=" + searchVal;         
    });    
})(jQuery);

当网站加载时,它会被编译到这个更大的脚本中,在调试器中看起来像这样:

    (function ($) {
  Drupal.behaviors.titlebar = {
    init: function(context, settings) {
      // Using percentage font size to easily increase/decrease page font size
      var baseFontSize = 100;
      $('.pgc-font-size a').click(function() {
        if($(this).hasClass('increase')) {
          if(baseFontSize < 150)
            baseFontSize += 20;
          $('.pg-content-body p').css('font-size', baseFontSize+'%');
        } else {
          if(baseFontSize > 70)
            baseFontSize -= 10;
          $('.pg-content-body p').css('font-size', baseFontSize+'%');
        }
      });

      // Print button
      $('.pgc-print a').click(function() {
        window.print();
      })
    }
  };
}(jQuery));
// There's a problem with our jQuery loading before the ingested site's
// jQuery which is causing jQuery plugins to break (the "once" plugin in this case).
// I'm using this workaround for now
jQuery(function() {
  Drupal.behaviors.titlebar.init();
});;
(function ($) {
  Drupal.behaviors.giftTypes = {
    init: function() {
      // Gift details accordion
      $('.pg-gift-details .accordion-items').css('display', 'none');
      $('.pg-gift-details .accordion-switch').click(function(){
        if($(this).hasClass('open')) {
          $(this).find('span').removeClass('icon-arrow-up').addClass('icon-arrow-down');
          $('.pg-gift-details .accordion-items').slideUp('slow');
          $(this).html($(this).html().replace('Hide', 'Show More'));
          $(this).removeClass('open');
        } else {
          $(this).find('span').removeClass('icon-arrow-down').addClass('icon-arrow-up');
          $('.pg-gift-details .accordion-items').slideDown('slow');
          $(this).html($(this).html().replace('Show More', 'Hide'));
          $(this).addClass('open');
        }
      })
    }
  }
}(jQuery));
// There's a problem with our jQuery loading before the ingested site's
// jQuery which is causing jQuery plugins to break (the "once" plugin in this case).
// I'm using this workaround for now
jQuery(function() {
  Drupal.behaviors.giftTypes.init();
});;
(function ($){
$("#ctl00_btnSearch001").on("click", function(){
    var searchVal = $("#ctl00_txtSearch").val();
    alert(searchVal);
    window.location.href = "http://www.mywebsite.org/search/?sa=Search&q=" + searchVal;
  });
})(jQuery);
;

你可以在那里看到我的小脚本。它说第一行出了问题,但我不确定问题是什么。我需要对我的javascript文件进行哪些更改以确保其编译正确?


我可能忽略了一个非常简单的类型,但我无法看到我的jQuery出了什么问题。

这是不起作用的部分:

(function ($){
    $("#ctl00_btnSearch001").on("click", function(){
        var searchVal = $("#ctl00_txtSearch").val();
        window.location.href = "http://www.website.org/search/?sa=Search&q=" + searchVal;
    });
})(jQuery);

我的网站上有jQuery,我知道我这样做,因为它在代码中使用过,没有问题。错误显示在第一行的调试器中,&#39; $(&#34;#ct100_btnSearch001&#34;)。on(&#34; click&#34;,function(){&#39;。这里是脚本页面的一个较大部分:

(function($) {
    Drupal.behaviors.giftTypes = {
        init: function() {
            // Gift details accordion
            $('.pg-gift-details .accordion-items').css('display', 'none');
            $('.pg-gift-details .accordion-switch').click(function() {
                if ($(this).hasClass('open')) {
                    $(this).find('span').removeClass('icon-arrow-up').addClass('icon-arrow-down');
                    $('.pg-gift-details .accordion-items').slideUp('slow');
                    $(this).html($(this).html().replace('Hide', 'Show More'));
                    $(this).removeClass('open');
                } else {
                    $(this).find('span').removeClass('icon-arrow-down').addClass('icon-arrow-up');
                    $('.pg-gift-details .accordion-items').slideDown('slow');
                    $(this).html($(this).html().replace('Show More', 'Hide'));
                    $(this).addClass('open');
                }
            })
        }
    }
}(jQuery));

jQuery(function() {
    Drupal.behaviors.giftTypes.init();
});;
(function($) {
    $("#ctl00_btnSearch001").on("click", function() {
        var searchVal = $("#ctl00_txtSearch").val();
        alert(searchVal);
        window.location.href = "http://www.mywebsite.org/search/?sa=Search&q=" + searchVal;
    });
})(jQuery);;

3 个答案:

答案 0 :(得分:0)

尝试安装jQuery update模块。

如果您使用的是Drupal 6,则无法使用on功能。

一个选项是在page.tpl.php中包含自定义版本的jQuery,另一个选项(不推荐)是使用live,但现在已弃用。

答案 1 :(得分:0)

您可以使用两种方式将函数绑定到事件:

1.使用bind()方法和事件名称作为第一个参数

$( "#foo" ).bind( "click", function() {
alert( "User clicked on 'foo.'" );
});

2.只需使用事件方法

$( "#foo" ).click( function() {
alert( "User clicked on 'foo.'" );
});

您的代码的问题是没有on事件。  ref http://api.jquery.com/category/events/mouse-events/

答案 2 :(得分:0)

如果ctl00_btnSearch001是您尝试点击的内容的正确ID。尝试将其更改为:

(function ($){
    $(document).on("click", "#ctl00_btnSearch001", function(){
       var searchVal = $("#ctl00_txtSearch").val();
       window.location.href = "http://www.mywebsite.org/search/?sa=Search&q=" + searchVal;         
    });    
})(jQuery);