【问题标题】:.get mootools method not working in joomla 1.5.get mootools 方法在 joomla 1.5 中不起作用
【发布时间】:2011-07-24 17:58:22
【问题描述】:

我在 joomla 1.5.18 中遇到问题。我正在尝试使用例如从元素中获取文本

var divContent = $$('#myDiv').get('text');

但每次我得到错误,在 chrome 中:Uncaught TypeError: Object #<HTMLDivElement> has no method 'get';在 Firefox 中: divContent.get 不是函数。为什么会出现这个错误?

【问题讨论】:

    标签: mootools joomla1.5


    【解决方案1】:

    即使在 mootools 中跟踪示例,我也会得到相同的结果。

    我知道如何为集合中的每个对象执行此操作。我开始做 $$('.') 并使用“每个”方法:

    $$('p.classname').each(function (el){
          el.addEvent('click', function() {
              var txt = el.get('text');
              ...
          });
    });
    

    显然我将函数添加到 domready 中。我不使用 jquery,因为 mootools 和 jquery 会停止每个事件...-我尝试过一次,我需要的东西不起作用-我希望使用包括 mootools 在内的所有 joomla 资源。

    检查 mootools.js 中的版本,上面写着 1.13 (?)

    【讨论】:

      【解决方案2】:

      不确定 joomla 1.5.18 中的 mootools 版本,可能是 1.2.5。如果是这样,.get 应该可以工作,但不会像您期望的那样。

      您可能是一个 jquery 用户,习惯于 $("#myid"),并发现在 mootools 中使用 # 获得类似结果的唯一方法是通过 document.getElements,又名 $$

      问题是,要在 mootools 中通过 id 获取单个项目,您实际上是使用 document.id("mydiv") 甚至 $("mydiv")$$("#mydiv") 实际上会返回一个包含单个成员的元素的集合,所以[obj],所以真正的元素是$$("#mydiv")[0]

      如果您将 .get 方法应用于 COLLECTION,则 getter 通常会通过 .each 遍历所有成员并单独执行 get。它将为集合的每个成员返回一个新的数组成员 - 即["innertext"]; - 虽然应该有一个集合方法,但请确保该元素存在,它在 domready / onload 中,它是唯一的身份证。

      不过,我还是换用$("mydiv").get("text"),应该没问题。根据我的经验,对于不阅读手册的 jquery 用户来说,这是非常普遍的假设。由于所有 .each 迭代 mootools 必须默默地为您处理集合,它会导致代码错误且性能不佳。只是说说而已。

      【讨论】:

        【解决方案3】:

        您还可以(并且应该)将您的 Joomla 升级到最新版本(安全修复程序等),我相信它是关于 1.5.20 版的,它们包括开箱即用的较新版本的 mootools(还有一个mootools 升级插件,您可以启用)。我相信 1.5.20 中包含的版本就像 1.2.5 或其他什么的......

        这可能会有所帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-04-21
          • 1970-01-01
          • 2014-07-10
          • 1970-01-01
          • 1970-01-01
          • 2011-06-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多