问题描述
我正在尝试从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,则此代码应该可以工作...
但这对我不起作用...有什么帮助吗?
1楼
如果您使用的是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等。
2楼
尝试将所有自定义jQuery代码放在其自己的文件中,然后在jQuery之后使用ResourceLoader将其作为模块加载。
另外,作为一种调试方法:在Firefox中完全加载您的网站,然后在控制台中输入您的自定义jQuery代码。 如果可行,则您的问题是竞赛状况。 如果不是,则由于某种原因jQuery无法加载。
3楼
我对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');
});
希望能有所帮助。