jquery与javascript冲突

jquery与javascript冲突,javascript,jquery,Javascript,Jquery,我在母版页中使用jquery,在内容页中使用javascript。单独使用Jquery时,它可以正常工作。但是当我将javascript(内容页)与jquery(母版页)一起使用时,母版页中的jquery就会停止工作 母版页脚本 $(document).ready(function() { // set up the accordion $("#accordion>h3").click(function() { $(this).next("div").slideToggle(50

我在母版页中使用jquery,在内容页中使用javascript。单独使用Jquery时,它可以正常工作。但是当我将javascript(内容页)与jquery(母版页)一起使用时,母版页中的jquery就会停止工作

母版页脚本

$(document).ready(function() {

// set up the accordion
$("#accordion>h3").click(function() {
    $(this).next("div").slideToggle(500).siblings("div").slideUp(500);
});

// show active menu section
setTimeout('$("#accordion>div.activesec").slideToggle(800)', 100);
$('slideshow').style.display = 'none';
$('wrapper').style.display = 'block';
var slideshow = new TINY.slideshow("slideshow");
window.onload = function () {
    slideshow.auto = true;
    slideshow.speed = 5;
    slideshow.link = "linkhover";
    slideshow.info = "information";
    slideshow.thumbs = "slider";
    slideshow.left = "slideleft";
    slideshow.right = "slideright";
    slideshow.scrollSpeed = 4;
    slideshow.spacing = 5;
    slideshow.active = "#fff";
    slideshow.init("slideshow", "image", "imgprev", "imgnext", "imglink");
}
}))

内容页脚本

$(document).ready(function() {

// set up the accordion
$("#accordion>h3").click(function() {
    $(this).next("div").slideToggle(500).siblings("div").slideUp(500);
});

// show active menu section
setTimeout('$("#accordion>div.activesec").slideToggle(800)', 100);
$('slideshow').style.display = 'none';
$('wrapper').style.display = 'block';
var slideshow = new TINY.slideshow("slideshow");
window.onload = function () {
    slideshow.auto = true;
    slideshow.speed = 5;
    slideshow.link = "linkhover";
    slideshow.info = "information";
    slideshow.thumbs = "slider";
    slideshow.left = "slideleft";
    slideshow.right = "slideright";
    slideshow.scrollSpeed = 4;
    slideshow.spacing = 5;
    slideshow.active = "#fff";
    slideshow.init("slideshow", "image", "imgprev", "imgnext", "imglink");
}

您的选择似乎缺少“#”或“.”,具体取决于您尝试访问id或类的天气

$('#slideshow').style.display = 'none';
$('#wrapper').style.display = 'block';

我相信冲突是由于您在内容页中使用了
$
速记造成的<代码>$用于表示jQuery。因此,jQuery试图解释
$('slideshow').style.display
,这是无效的jQuery

用document.getElementById替换速记,或使用jQuery选择器

标准JS

document.getElementById.style.display = 'none';
或jQuery

$('slideshow').css('display', 'none');

您是否将您的平面javascript放入:

$(document).ready(function() {
});

如果是,那么尝试将它们放在它之外。

最佳实践是将所有Javascript/Jquery代码放在一个.js文件中。然后在需要它的页面中导入这个.js

这样,您的HTML将是干净的,不会到处被javascript弄乱

我知道我并没有真正回答你的问题,但这样做可能有助于避免它


祝您好运

您正在向
setTimeout
参数传递一个字符串。真糟糕

$('slideshow').style.display = 'none';
您试图用jQuery查找
标记,可能缺少类或ID选择器


另外,据我所知,
style
方法不是jQuery方法,所以您可能希望在JavaScript对象上调用它,而不是在jQuery对象上调用它?或者可能对其使用
.css
方法?

好的,因此看起来其他脚本使用
$
,就像jQuery一样。您需要使用
$.noConflict()
来防止命名空间冲突:

var $j = jQuery.noConflict();

$j(document).ready(function() {

// set up the accordion
$j("#accordion>h3").click(function() {
    $j(this).next("div").slideToggle(500).siblings("div").slideUp(500);
});

// show active menu section
setTimeout('$j("#accordion>div.activesec").slideToggle(800)', 100);
如果不想在所有jQuery函数中使用
$j
而不是
$
,则可以将所有内容(内容页脚本除外!)包装到一个函数中,该函数将
$
分配给jQuery:

(function( $ ){
  // everything inside works normally with $
})( jQuery ); 

这是不对的。jQuery对象没有
.style
属性。这是内容页上的javascript是的,我单独放置了它们。但是冲突仍然发生。您是否检查了javascript控制台是否有错误?$(“#accordion>h3”)为null是consoleWell上的错误,这将有助于添加到问题中:)HTML中是否有带有
h3
标记的
#accordion
元素?是的,juhana。类似于test-1的东西列表项在这里而且,内容脚本看起来非常像原型。页面是否加载prototype.js?@sam,你知道它区分大小写,对吗
document.getElementById('yourIdHere')
。还有,你说的还是原来的意思是什么?你犯了什么错误?对不起,詹姆斯,我使用了你提到的正确的案例$(“#accordion>h3”)为空是firefox控制台上的错误。我理解javascript$与jquery中的冲突,这就是为什么我得到空错误的原因。它起作用了。谢谢。我尝试直接使用jquery.conflict(),但没有成功,这将解决问题。祝你玩得愉快。。干杯