早些时候问了一个问题并得到了很好的回答,你们真是太棒了。现在的问题是如何正确实施解决方案。
我正在尝试使用jQuery和原型库,使用jQuery.noConfict()修复:
<script src="./js/prototype.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
jQuery.noConflict();
// Use jQuery via jQuery(...)
jQuery(document).ready(function(){
jQuery("slideshow1").hide();
});
// Use Prototype with $(...), etc.
$('#lightbox').hide();
</script>
<script type="text/javascript" src="./js/lightbox.js"></script>
<script type="text/javascript" src="./js/scriptaculous.js"></script>
<script type="text/javascript" src="http://malsup.github.com/chili-1.7.pack.js"></script>
<script type="text/javascript" src="http://cloud.github.com/downloads/malsup/cycle/jquery.cycle.lite.1.0.min.js"></script>
<script type="text/javascript">
$(function() {
$('#slideshow1').cycle({
delay: 2000,
speed: 1000,
});
});
</script>
我理解这个原则(默认情况下,jQuery使用“$”作为“jQuery”的快捷方式),对此的解决方案看起来应该可行。但是,实施后,页面会显示为空白背景。
This is a demo of the page, using the current script implementation.
如何解决这个问题?
答案 0 :(得分:3)
嗯,首先,你不正确地链接prototype.js
。它应该是./js/prototype.js
。
修改强>
还缺少其他一些:./ js / dradrop.js ./js/controls.js ./js/slider.js
然后,看起来你正在使用jQuery而不是原型(但是,我没有任何原型经验)。我在他们的网站上查找了你并将id传递给$()
函数,而不是css-like / jQuery选择器。因此,如果您拥有$("#slideshow1").hide();
,则必须将其设为jQuery("#slideshow1").hide();
或$("slideshow1").hide();
,如果它是原型函数。对于页面下的其他脚本,情况也是如此。
编辑2
修复丢失的JavaScript文件后,此行:$('slideshow1').hide();
应为jQuery('#slideshow1').hide();
。
这些:
$(function() {
$('#slideshow1').cycle({
delay: 2000,
speed: 1000,
});
});
应该是:
jQuery(function() {
jQuery('#slideshow1').cycle({
delay: 2000,
speed: 1000,
});
});
答案 1 :(得分:0)
我认为Prototype会像jQuery那样执行$(id),而不是$(selector)。它还返回实际的DOM元素。所以例如我认为$('#slideshow1').hide()
会在原型中$('slideshow1').style.visibility = 'hidden'
。对于这样的事情,jQuery会更容易。看起来所有的$()调用都是jQuery()调用,并且需要重写Prototype方式才能工作 - 或者只是将$更改为jQuery。
编辑:实际上,$甚至不是原型......原型是$$
。