您的当前位置:首页正文

JQuery中的ready函数冲突的解决方法_jquery

时间:2023-12-02 来源:站点网

一个aspx页面通常可以包含其它ascx控件,如果在多人协同开发的情况下:程序员小张在控件A.ascx中使用了 $().ready(function{}),而程序员小王又在控件B.ascx中也使用了ready函数,程序员小李在做页面时,把A.ascx,B.ascx都拖到自己的页面中,然后在页面中也需要用到$().ready函数,这下好了: 虽然jQuery本身的设计还算不错,document加载完成后会依次触发各个ready中定义的function(这一点很好,不象javascript中默认后面的同名函数会覆盖前面的函数定义),但是如果某个程序员希望自己的ready部分先执行(或者这三个程序员各自的ready处理有严格先后顺序时),这个怎么办呢? 其实这个也不难,可以利用setTimeOut让某个程序员的ready部分延时执行 代码如下: $().ready(function(){ setTimeout(Test1, 50);//延时50毫秒后再执行本函数 }) $().ready(function(){ Test2(); }) function Test1(){ alert("脚本之家"); } function Test2(){ alert("www.gxlcms.com"); } 样就行了,本来应该是先弹出1,再弹出2的,利用延时触发后,就成了先弹出2,再弹出1

小编还为您整理了以下内容,可能对您也有帮助:

为了解决jQuery中的$()函数和其它Javascript库中的$()函数的冲突问题,可以使用_

1:使用noConflict(),将$替换为其他符号

var $j = jQuery.noConflict();

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

});

2:使用jQuery

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

3:如果你去看jQuery的各种插件源码,基本都是使用这种方法来避免冲突。(function($) {

    //你的js代码

})(jQuery);

另外这里有我关于$(function(){})的认证答案,其中也对此用法进行了说明,欢迎点赞!

https://zhidao.baidu.com/question/170571068.html?entry=qb_uhome_tag

jQuery与JS $ 冲突问题,求解决办法。

jQuery.noConflict

【第一种方法】

jQuery.noConflict();

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

$('#slides').slides({preload: false});

});

// 其它使用 $ 的 JS

$('#ele').hide();

【第二种方法】

jQuery.noConflict();

(function($) {

$(function() {

$('#slides').slides({preload: false});

});

})(jQuery);

// 其它使用 $ 的 JS

$('#ele').hide();

【第三种方法】

jQuery.noConflict();

jQuery(document).ready(function() {

jQuery('#slides').slides({preload: false});

});

// 其它使用 $ 的 JS

$('#ele').hide();

【第四种方法】

var $j = jQuery.noConflict();

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

$j('#slides').slides({preload: false});

});

// 其它使用 $ 的 JS

$('#ele').hide();追问// 其它使用 $ 的 JS

$('#ele').hide();

这两句怎么使用?

追答$('#ele').hide(); 这句只是个例子,因为你只给出了 jQuery 代码。你说有冲突应该是在其它地方有使用到 $ 这个别名。你除了 jQuey 还使用其它 JS 库了吗?例如 Prototype,MooTools,最好能把其它代码也贴出来。

下面的例子中引用了 jQuery 和 Prototype 库,两个 JS 库都使用 $ 作为别名

// 这里是 jQuery 代码,里面使用了 $,代表 jQuery

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

// 你给出的代码

$('#slides').slides({preload: false});

});

// 这里是 Prototype 代码,也使用 $,但代表 Prototype

$('#ele').hide();

jQuery版本之间冲突如何解决?

所以實現版本之間的和平相處很重要。這裡介紹一個函數,可以很順利,很簡單的解決這個問題。
使用實例:<script type="text/javascript" src="jquery.js"</script
<script type="text/javascript"
var j = jQuery.noConflict(true);
</script
<script type="text/javascript" src="jquery-1.7.js"</script
<script type="text/javascript"
$(document").ready(function(){
alert(faf");})
j(document").ready(function(){
alert(faf");})</script
運行這個函數把$的使用權讓渡給另一個jquery庫,這樣就能避免不同jquery版本之間的$對象之間的衝突。(經試驗,如上試驗驗證可以輸出兩個彈出框,可以解決不同版本之間的衝突。)
在運行這個函數之後,就只能用j訪問第一個jquery庫。例如,在要用到$(div p")的地方,就必须换成j(div p")。另一個jquery庫,正常使用$訪問。
注意:這個函數必須在導入jQuery文件之后,並且在導入另一個jquery庫之前運行。(如上例運行位置。)
是否可以解决您的问题?

jQuery版本之间冲突如何解决?

所以實現版本之間的和平相處很重要。這裡介紹一個函數,可以很順利,很簡單的解決這個問題。
使用實例:<script type="text/javascript" src="jquery.js"</script
<script type="text/javascript"
var j = jQuery.noConflict(true);
</script
<script type="text/javascript" src="jquery-1.7.js"</script
<script type="text/javascript"
$(document").ready(function(){
alert(faf");})
j(document").ready(function(){
alert(faf");})</script
運行這個函數把$的使用權讓渡給另一個jquery庫,這樣就能避免不同jquery版本之間的$對象之間的衝突。(經試驗,如上試驗驗證可以輸出兩個彈出框,可以解決不同版本之間的衝突。)
在運行這個函數之後,就只能用j訪問第一個jquery庫。例如,在要用到$(div p")的地方,就必须换成j(div p")。另一個jquery庫,正常使用$訪問。
注意:這個函數必須在導入jQuery文件之后,並且在導入另一個jquery庫之前運行。(如上例運行位置。)
是否可以解决您的问题?

$(document).ready(function(){}) 和function $( id ) { }起冲突怎么解决

我写了一个,你看一下,我猜你的结构是:

<ul id="nav_lis">

<li><span>span里的文字</span>

<div>隐藏的内容</div>

</li>

<li><span>span里的文字</span>

<div>隐藏的内容</div>

</li>

</ul>

所以只要这样写,就可以了:

$(document).ready(function() {

$('#ulquestion li div').hide();

$('#ulquestion li').hover(function(){

$('#ulquestion li span').removeClass('select');

$(this).find('span').addClass('select');

$(this).find('div').show();

},function(){

$(this).find('div').hide();

});

});

你试试。追问额 看来我还是没有说清楚 我写的两段是不同的js文件里的 是用于不同的效果 代码本身都没错 单独用一个话可以 但是两个放在一个html里 同时想有两种效果 就冲突了 上网查了说是都是用$符号 重复调用了jquery库好像 但是我也不懂js/jquery 你再给我想哈改怎么办嘛 谢谢了 很感谢

追答哦,换个名字试试,比如:

function ss( id ){

return document.getElementById( id );

}

如何解决jQuery和其他库的冲突问题


在jQuery库中,几乎所有的插件都被*在它的命名空间里。通常,全局对象都被很好地储存在jQuery的命名空间里,所以当把jQuery库和其他js库(Prototype,MooTools或YUI)一起使用时,不会引起冲突。

注意:默认情况下jQuery用“$”作为自身的快捷方式。
当我们使用的其他JavaScript库也是以"$"作为快捷方式时,这个时候如何解决jQuery和其他库的冲突呢?
1、jQuery库在其他库之后导入

(1)使用"jQuery"全名代替"$"在其他库和jQuery库都被加载完毕后,可以在任何时候调用jQuery.noConflict()函数将变量$的控制权移交给其他JavaScript库。
示例:
//...省略其他代码
<p id="pp">Text-prototype(将被隐藏)</p>
<p>Text-jQuery(将被绑定单击事件)</p>
<!-- 引入prototype -->
<script src="lib/prototype.js" type="text/javascript"></script>
<!-- 引入jQuery -->
<script src="../../scripts/jquery.js" type="text/javascript"></script>
<script>
jQuery.noConflict(); //将变量$的控制权让渡给prototype.js
jQuery(function(){ //使用jQuery
jQuery("p").click(function(){
alert( jQuery(this).text() );
})
})
$("pp").style.display = 'none'; //使用prototype隐藏元素
</script>然后就可以在程序里将jQuery()函数作为jQuery对象的制造工厂。

(2)自定义快捷方式

可以自定义备用名称,例如jq,$j等等。示例:
var $j = jQuery.noConflict(); //自定义一个快捷方式
$j(function(){ //使用jQuery,利用自定义快捷方式——$j
$j("p").click(function(){
alert( $j(this).text() );
})
})
$("pp").style.display = 'none'; //使用prototype.js隐藏元素(3)使用$而不与其他库冲突

如果不想给jQuery自定义这些备用名称,还想使用$而不管其他库的$()方法,同时又不想与其他库冲突,可以使用以下两种解决方法。
其一:
jQuery.noConflict(); //将变量$的控制权让渡给prototype.js
jQuery(function($){ //使用jQuery设定页面加载时执行的函数
$("p").click(function(){ //在函数内部继续使用 $()方法
alert( $(this).text() );
})
})
$("pp").style.display = 'none'; //使用prototype 其二:
jQuery.noConflict(); //将变量$的控制权让渡给prototype.js
(function($){ //定义匿名函数并设置形参为$
$(function(){ //匿名函数内部的$均为jQuery
$("p").click(function(){ //继续使用 $ 方法
alert( $(this).text() );
});
});
})(jQuery); //执行匿名函数且传递实参jQuery
$("pp").style.display = 'none'; //使用prototype这是一种最理想的方式,可以通过改变最少的代码来实现全面的兼容性。
2、jQuery库在其他库之前导入如果jQuery库在其他库之前导入,那么$()的控制权默认归属于后面导入的JavaScript库。可以直接使用“jQuery”来做一些工作。同时,可以使用$()方法作为其他库的快捷方式。这里无需调用jQuery.noConflict()函数。示例:
<!-- 先导入jQuery -->
<script src="../../scripts/jquery.js" type="text/javascript"></script>
<!-- 后导入prototype -->
<script src="lib/prototype.js" type="text/javascript"></script>
<p id="pp">Test-prototype(将被隐藏)</p>
<p >Test-jQuery(将被绑定单击事件)</p>
<script>
jQuery(function(){ //直接使用 jQuery ,无需调用"jQuery.noConflict()"函数
jQuery("p").click(function(){
alert( jQuery(this).text() );
});
});
$("pp").style.display = 'none'; //使用prototype
</script>

如何解决jQuery和其他库的冲突问题


在jQuery库中,几乎所有的插件都被*在它的命名空间里。通常,全局对象都被很好地储存在jQuery的命名空间里,所以当把jQuery库和其他js库(Prototype,MooTools或YUI)一起使用时,不会引起冲突。

注意:默认情况下jQuery用“$”作为自身的快捷方式。
当我们使用的其他JavaScript库也是以"$"作为快捷方式时,这个时候如何解决jQuery和其他库的冲突呢?
1、jQuery库在其他库之后导入

(1)使用"jQuery"全名代替"$"在其他库和jQuery库都被加载完毕后,可以在任何时候调用jQuery.noConflict()函数将变量$的控制权移交给其他JavaScript库。
示例:
//...省略其他代码
<p id="pp">Text-prototype(将被隐藏)</p>
<p>Text-jQuery(将被绑定单击事件)</p>
<!-- 引入prototype -->
<script src="lib/prototype.js" type="text/javascript"></script>
<!-- 引入jQuery -->
<script src="../../scripts/jquery.js" type="text/javascript"></script>
<script>
jQuery.noConflict(); //将变量$的控制权让渡给prototype.js
jQuery(function(){ //使用jQuery
jQuery("p").click(function(){
alert( jQuery(this).text() );
})
})
$("pp").style.display = 'none'; //使用prototype隐藏元素
</script>然后就可以在程序里将jQuery()函数作为jQuery对象的制造工厂。

(2)自定义快捷方式

可以自定义备用名称,例如jq,$j等等。示例:
var $j = jQuery.noConflict(); //自定义一个快捷方式
$j(function(){ //使用jQuery,利用自定义快捷方式——$j
$j("p").click(function(){
alert( $j(this).text() );
})
})
$("pp").style.display = 'none'; //使用prototype.js隐藏元素(3)使用$而不与其他库冲突

如果不想给jQuery自定义这些备用名称,还想使用$而不管其他库的$()方法,同时又不想与其他库冲突,可以使用以下两种解决方法。
其一:
jQuery.noConflict(); //将变量$的控制权让渡给prototype.js
jQuery(function($){ //使用jQuery设定页面加载时执行的函数
$("p").click(function(){ //在函数内部继续使用 $()方法
alert( $(this).text() );
})
})
$("pp").style.display = 'none'; //使用prototype 其二:
jQuery.noConflict(); //将变量$的控制权让渡给prototype.js
(function($){ //定义匿名函数并设置形参为$
$(function(){ //匿名函数内部的$均为jQuery
$("p").click(function(){ //继续使用 $ 方法
alert( $(this).text() );
});
});
})(jQuery); //执行匿名函数且传递实参jQuery
$("pp").style.display = 'none'; //使用prototype这是一种最理想的方式,可以通过改变最少的代码来实现全面的兼容性。
2、jQuery库在其他库之前导入如果jQuery库在其他库之前导入,那么$()的控制权默认归属于后面导入的JavaScript库。可以直接使用“jQuery”来做一些工作。同时,可以使用$()方法作为其他库的快捷方式。这里无需调用jQuery.noConflict()函数。示例:
<!-- 先导入jQuery -->
<script src="../../scripts/jquery.js" type="text/javascript"></script>
<!-- 后导入prototype -->
<script src="lib/prototype.js" type="text/javascript"></script>
<p id="pp">Test-prototype(将被隐藏)</p>
<p >Test-jQuery(将被绑定单击事件)</p>
<script>
jQuery(function(){ //直接使用 jQuery ,无需调用"jQuery.noConflict()"函数
jQuery("p").click(function(){
alert( jQuery(this).text() );
});
});
$("pp").style.display = 'none'; //使用prototype
</script>

使用JQuery出现这样问题我在js中这样写 $().ready(function(){ alert(1) }); 浏览器总报这样的错误

$().ready(function(){ alert(1) }); 

没有这种语法,因为

$()的意思就是选取HTML 元素,并对它们执行“操作”,你括号里面是空的,没有对象啊,当然就是没有定义,所以会出现$ is not defined(没定义的意思)

jQuery 语法实例

$(this).hide()

演示 jQuery hide() 函数,隐藏当前的 HTML 元素。

$("#test").hide()

演示 jQuery hide() 函数,隐藏 id="test" 的元素。

$("p").hide()

演示 jQuery hide() 函数,隐藏所有 <p> 元素。

$(".test").hide()

演示 jQuery hide() 函数,隐藏所有 class="test" 的元素。

用下面这种: $(document).ready(function() {(  alert(1);)}

这部分代码主要声明,页面加载之后执行alert(1);

结果如下:

希望我的回答对你有帮助。另外,不要忘记了,因为你是用JQuery,所以一定要引入JQuery文件,<script src="jquery-1.6.2.min.js" type="text/javascript"></script>

追问哎呀,是我太笨了,JQuery的文件引入要在我写的js文件之前的,还是谢谢你了,采纳你的了

追答JQuery的文件引入要在你写的js文件之前,因为你的其他js文件是用jquery写的,所以要写引入jquery文件,等于是先拿工具(jquery),再拿工具操作(其他js)。

jQuery事件详解之$(document).ready()

在页面加载结束后,浏览器会通过js为dom元素添加事件。原生的js中使用window.onload方法;在JQ中使用$(document).ready()。这个方法在dom载入就绪时对其进行操纵并调用执行它所绑定的函数。

那么它和window.onload有何不同呢?

window.onload是在网页中所有元素加上所有资源++完全加++载到浏览器后才执行。

而$(document).ready()中绑定的事件是在dom完全就绪时就可以被调用,此时对于jQuery来说都是可以被访问的(关联的资源可能并没有被加载完毕)。

举个例子来说,在$(document).ready()中定义了图片的宽高,但由于此时图片还没有被加载完毕,此时的宽高不会生效。要解决这个问题可以使用jQuery中的load()方法。

load()方法会在元素的onload事件中绑定一个处理函数,如果该处理函数绑定给window对象,则会在所有资源加载完毕后触发,如果load绑定在元素上则会在该元素加载完毕后触发。

既然window.onload比较完备为什么还要用jQuery中的$(document).ready()呢?

window.onload事件每次只能保存对一个函数的引用,他会覆盖掉之前的函数,所以不能再现有行为上添加新的行为。如果引用了多个js文件,每个都需要window.onload方法就导致编码复杂。

使用$(document).ready()方法能够很好地解决这种问题,每次调用$document.ready()方法都会在现有行为上追加新的行为,这些行为会根据注册顺序依次执行。

jQuery事件详解之$(document).ready()

在页面加载结束后,浏览器会通过js为dom元素添加事件。原生的js中使用window.onload方法;在JQ中使用$(document).ready()。这个方法在dom载入就绪时对其进行操纵并调用执行它所绑定的函数。

那么它和window.onload有何不同呢?

window.onload是在网页中所有元素加上所有资源++完全加++载到浏览器后才执行。

而$(document).ready()中绑定的事件是在dom完全就绪时就可以被调用,此时对于jQuery来说都是可以被访问的(关联的资源可能并没有被加载完毕)。

举个例子来说,在$(document).ready()中定义了图片的宽高,但由于此时图片还没有被加载完毕,此时的宽高不会生效。要解决这个问题可以使用jQuery中的load()方法。

load()方法会在元素的onload事件中绑定一个处理函数,如果该处理函数绑定给window对象,则会在所有资源加载完毕后触发,如果load绑定在元素上则会在该元素加载完毕后触发。

既然window.onload比较完备为什么还要用jQuery中的$(document).ready()呢?

window.onload事件每次只能保存对一个函数的引用,他会覆盖掉之前的函数,所以不能再现有行为上添加新的行为。如果引用了多个js文件,每个都需要window.onload方法就导致编码复杂。

使用$(document).ready()方法能够很好地解决这种问题,每次调用$document.ready()方法都会在现有行为上追加新的行为,这些行为会根据注册顺序依次执行。

jquery问题$(document).ready(function()

第一种写法是保证在页面dom元素全部加载完毕后才给$('#submit')元素绑定click事件,而第二种则是直接绑定,这样的话当绑定语句运行时,$('#submit')元素有可能尚未加载到内存(这要看jq语句与html语句哪个在前哪个在后),造成绑定失败。

所以,凡是涉及页面dom元素操作且必须在页面打开后就运行的语句,都应该放到ready事件中执行。当然,并不是说放到外面就一定会出错,但程序这种东西是严谨的,从代码健壮性考虑,按照标准方式去做,可以避免以后的很多麻烦。

一个页面有两个不同的ready(function () 后面一个不起作用怎么解决

这里可能会有以下几种原因,请你挨个排查:

1、js文件的引用路径不正确,特别是使用了命名空间,容易造成路径错误,使用绝对路径看是否成功

2、某一些函数使用错误,举个例子,如果GetByJquery()存在错误,就会导致整个js不会执行,可以把所有函数都注释掉,只看$(document).ready(function(){});是否会执行

3、$选择器所选的内容是否存在

PS:排查很简单,请使用调试工具,如Firebug,查看console面板,就会把错误信息展现出来的,如果有问题可以继续咨询我

站点网还为您提供以下相关内容希望对您有帮助:

为了解决jQuery中的$()函数和其它Javascript库中的$()函数的冲突问题...

1:使用noConflict(),将$替换为其他符号 var $j = jQuery.noConflict();$j(document).ready(function(){});2:使用jQuery jQuery( document ).ready(function( $){}3:如果你去看jQuery的各种插件源码,基本都是使用...

jQuery与JS $ 冲突问题,求解决办法。

jQuery(document).ready(function($) { ('#slides').slides({preload: false});});// 其它使用 $ 的 JS ('#ele').hide();【第二种方法】jQuery.noConflict();(function($) { (function() { ('#slides')....

$(document).ready(function(){}) 和function $( id ) { }起冲突怎么...

span里的文字 隐藏的内容 span里的文字 隐藏的内容 所以只要这样写,就可以了:(document).ready(function() { ('#ulquestion li div').hide();('#ulquestion li').hover(function(){ ('#ulquestion li span...

jQuery版本之间冲突如何解决?

j(document").ready(function(){ alert(faf");})

jsp为什么不能执行jquery的$(document).ready()方法

有可能是 $ 符号有冲突,你写成 jQuery(document).ready(function(){ window.alert("执行了jquery");});试试

请问这个jquery怎么运行不了呢?

没有引用jquery.js

jQuery事件详解之$(document).ready()

举个例子来说,在$(document).ready()中定义了图片的宽高,但由于此时图片还没有被加载完毕,此时的宽高不会生效。要解决这个问题可以使用jQuery中的 load ()方法。load()方法会在元素的onload事件中绑定一个处理函数,...

如何解决Jquery库及其他库之间的$命名冲突_jquery

一、 jQuery库在其他库之前导入,直接使用jQuery(callback)方法如: 代码如下:test---prototypetest---jQueryjQuery(function(){ //直接使用 jQuery ,没有必要调用"jQuery.noConflict()"函数。jQuery("p").click(function(...

jquery用load可以正常执行ready却不行

那应该是因为你的资源还未完全加载完成导致的 ready指的是页面加载完成立即执行 load指的是页面中所有资源加载完成之后才执行 个人建议把你的js放到底部

一个页面有两个不同的ready(function () 后面一个不起作用怎么解决_百 ...

2、某一些函数使用错误,举个例子,如果GetByJquery()存在错误,就会导致整个js不会执行,可以把所有函数都注释掉,只看$(document).ready(function(){});是否会执行 3、$选择器所选的内容是否存在 PS:排查很简单,请...

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

Top