如何在javascript中覆盖函数的行为

时间:2015-03-26 00:15:01

标签: javascript

我正在尝试覆盖我正在开发的网站的javascript函数的行为。我是javascript的新手,我在解决这个问题时遇到了问题。我观看了几个视频并做了一些阅读,这就是我想出来的。

jQuery(document).ready(function ($) {

  function displayTab(element) {
    alert('here'); // test that I am getting here
    var tab = Drupal.quicktabs.tab
    // Set tab to active.
    $(this).parents('li').siblings().removeClass('active');
    $(this).parents('li').addClass('active');

    // Hide all tabpages.
    tab.container.children().addClass('quicktabs-hide');

    if (!tab.tabpage.hasClass("quicktabs-tabpage")) {
        tab = new Drupal.quicktabs.tab(element);
    }

    tab.tabpage.removeClass('quicktabs-hide');
    return false;
  }

  if ($( '#quicktabs-menu_block').length > 0) {
    $('#quicktabs-menu_block .quicktabs-tabs li').each(function() {
        $('a', this).bind({
            mouseenter: function(){
               $(this).displayTab($(this));
            }
        });
    });
  }
});

这不起作用 - 永远不会调用该函数。我不确定那是什么,但显然我错过了一些基本的东西。我错过了什么?

1 个答案:

答案 0 :(得分:0)

您在错误的上下文中调用该函数。在bind()方法内部的上下文选择器:

 $(this)

指的是鼠标的上下文,您需要做的就是替换

$(this).displayTab($(this));

displayTab($(this));

我已在代码here的精简版中对此进行了说明。