我正在使用prototype和script.aculo.us的组合在我的asp.net页面中实现灯箱效果。我的页面中也包含了jquery。我的页面中有几个DIV标签,但是在包含了在我的页面头部的原型文件,我无法使用jquery读取我的javascript中的div
var div = $("#divLeftSideModelsList");
alert(div)
给我一个错误,说该对象为null 但是
var div = document.getElementById("divLeftSideModelsList")
正在给我这个对象。
这是因为jQuery和其他框架之间存在一些冲突吗?
请咨询
答案 0 :(得分:6)
请仔细阅读:http://docs.jquery.com/Using_jQuery_with_Other_Libraries
展示了很好的例子:)
覆盖$ -FUNCTION
但是,您可以在jQuery之后的任何时候调用jQuery.noConflict()来覆盖该默认值,并且其他库都已加载。例如:
<html>
<head>
<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>
jQuery.noConflict();
// Use jQuery via jQuery(...)
jQuery(document).ready(function(){
jQuery("div").hide();
});
// Use Prototype with $(...), etc.
$('someid').hide();
</script>
</head>
<body></body>
</html>
这会将$还原为原始库。您仍然可以在应用程序的其余部分使用“jQuery”。
此外,还有另一种选择。如果你想确保jQuery不会与另一个库冲突 - 但是你想要一个简短名称的好处,你可以这样做:
<html>
<head>
<script src="prototype.js"></script>
<script src="jquery.js"></script>
<script>
var $j = jQuery.noConflict();
// Use jQuery via $j(...)
$j(document).ready(function(){
$j("div").hide();
});
// Use Prototype with $(...), etc.
$('someid').hide();
</script>
</head>
<body></body>
</html>
答案 1 :(得分:2)
您应该在noConflict mode中使用jQuery。然后使用jQuery()
代替$()
。
答案 2 :(得分:0)
奇怪的错误。无论如何,原型和jQuery都重新定义了全局变量$。
请阅读this以了解jQuery如何与其他图书馆合作。
它基本上说调用jQuery.noConflict()只留下$变量供其他lib使用
答案 3 :(得分:-2)
此代码是否有效:
var div = jQuery("#divLeftSideModelsList");
alert(div);