joomla中的jquery自定义插件无法正常工作

时间:2016-02-19 10:30:43

标签: javascript jquery joomla

我正在尝试添加自定义jquery插件。但我得到错误jQuery(...)。termifier不是一个函数....我很确定代码中没有错误

对于刚刚测试,我试图从learn.jquery.com

复制代码
(function($) {
    $.fn.greenify = function() {
        this.css("color", "green");
        return this;
    };
}(jQuery));

然后

jQuery('..').greenify();

返回错误jQuery(' ..')。greenify不是函数

发生什么事了?有谁知道原因?

修改

代码越多。这个绿化的事情只是为了表明它没有在标准的例子上工作....

实际的插件...它目前只放在同一个文件中,稍后在ellements上调用它,所以没有找到文件的问题..

 (function($) {
  $.fn.termifier = function(options) {
   options = $.extend({
      lookupResource: 'getTerm',
     flyoutClass: 'lookerUpperFlyout'
  },options||{});

   this.attr('title','Click me for my definition!');

   return this.click(function(event){
    $.ajax({
       url: options.lookupResource,
       type: 'get',
       data: {term: this.innerHTML},
       dataType: 'html',
    success: function(data) {
      $('<div></div>')
        .css({
          position: 'absolute',
          left: event.pageX,
          top: event.pageY,
          cursor: 'pointer',
          display: 'none'
        })
        .html(data)
        .addClass(options.flyoutClass)
        .click(function(){
          $(this).fadeOut(1500,function(){$(this).remove();});
         })
        .appendTo('body')
        .fadeIn();
      }

    });
    return false;
  });
 };
  }(jQuery));


 jQuery(document).ready(function(){
 ...
 jQuery('abbr').termifier({
    lookupResource: 'some.php'
  });

 });

我很无能......

3 个答案:

答案 0 :(得分:0)

它有效,但我认为在添加功能之前使用greenify()。

你能告诉我们更多代码吗?

(function ( $ ) {

   $.fn.greenify = function() {
      this.css( "color", "green" );
      return this;
  };

  }( jQuery ));
  
jQuery('#test').greenify();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p id="test">
  Black text?
</p>

答案 1 :(得分:0)

我猜你试着调用jQuery(&#39; ..&#39;)。greenify();在插件加载之前。

如果文档准备就绪,请添加它 - 以相同的方式调用插件

Get-Content

答案 2 :(得分:0)

首先,确保使用 Joomla的API 导入jQuery,如下所示:

<?php
   JHtml::_('jquery.framework');
?>

这将确保只导入1个jQuery实例,并且也是noConflict模式。

完成后,您应该使用jQuery全局范围和$作为别名(可选):

jQuery(document).ready(function($){
    $.fn.greenify = function() {
        this.css("color", "green");
        return this;
    };
});

希望这有帮助