当前位置: 代码迷 >> JavaScript >> Media Wiki页面中的jQuery(不仅限于Monobook.js或扩展名中)
  详细解决方案

Media Wiki页面中的jQuery(不仅限于Monobook.js或扩展名中)

热度:83   发布时间:2023-06-08 09:23:06.0

我正在尝试从MediaWiki内容页面内“动态地”做一些简单的jQuery东西。 它实际上只是为了“美化”一些不同的功能。

我已完成以下操作: : (最初主要用于Paypal按钮)

以下代码不起作用。 这将放在空白内容页面中。

<html>
<script>
$j(document).ready(function(){
    $j('#test').hover(
        function(){
            $j('#test').attr('background-color','red');
        }, 
        function(){ 
            $j('#test').removeAttr('background-color');
        }
    );
});
</script>
<div id="test">Howdy</div>
</html>

什么都没发生...

有任何想法吗?

更新:

我尝试了这种简单的解决方案,但没有结果。

example.com/wiki/index.php?title=MediaWiki:Common.js

$j('#jTest-Howdy').hover(
        function(){
            $j('#jTest-Howdy').addClass('jTest-red');
        }, 
        function(){ 
            $j('#jTest-Howdy').removeClass('jTest-red');
        }
);


example.com/wiki/index.php?title=MediaWiki:Common.css

.jTest-red { background-color: red; }


example.com/wiki/index.php?title=jQueryTest

<html>
<div id="jTest-Howdy">Howdy</div>
</html>

如您在此处看到的,如果正确加载了jQuery,则此代码应该可以工作...

但这对我不起作用...有什么帮助吗?

如果您使用的是MediaWiki 1.17加载的jQuery,请注意,大多数JavaScript 页面内容之后加载。 内联<script>元素到达时会立即执行,因此此时不会定义$ j -为此,您可能会在JavaScript错误控制台中看到一些错误。

(目前,我不确定1.16中包含的jQuery;据我所知,之前的MediaWiki版本不包含jQuery。)

通常,您要在此处执行的操作是将JavaScript代码模块放入“ MediaWiki:Common.js”页面,然后将其与HTML标记挂钩,或者创建一个MediaWiki扩展名-您可以从页面中调用该扩展名,并且可以让您创建自己喜欢的任何有趣的HTML和JavaScript输出。

您放置在'MediaWiki:Common.js'页面中的代码将在其他UI初始化之后加载,以确保存在代码和变量,以便您可以调用jQuery等。

尝试将所有自定义jQuery代码放在其自己的文件中,然后在jQuery之后使用ResourceLoader将其作为模块加载。

另外,作为一种调试方法:在Firefox中完全加载您的网站,然后在控制台中输入您的自定义jQuery代码。 如果可行,则您的问题是竞赛状况。 如果不是,则由于某种原因jQuery无法加载。

我对MediaWiki不太了解,但是对我来说,这似乎是一些简单的JavaScript错误。

在第一个示例中,当您需要设置css或style属性时,您尝试在元素上设置属性。

$j('#test').css('background-color', 'red');

在两个示例中,您都将事件绑定到DOM中尚不存在的元素,因此它将失败。 您可以使用live方法,该方法适用于DOM中引入的现有元素和将来的元素。

$j.('#test').live('mouseover', function(){
  $j(this).addClass('hover-class');
}).live('mouseout', function(){
  $j(this).removeClass('hover-class');
});

希望能有所帮助。

  相关解决方案