• 关于

    jQuery方法()

    的搜索结果

回答

jQuery 的实现原理 var jQuery = function(selector, context) { return new jQuery.fn.init(selector, context); }; 1)jQuery 采用的是构造函数模式进行开发的,jQuery 是一个类 2)上面说的常用的方法(CSS、属性、筛选、事件、动画、文档处理)都是定义在 jQuery.prototype 上的 ->只有 jQuery 的实例才能使用这些方法 2、选择器/筛选 1)我们的选择器其实就是创造 jQuery 类的一个实例 ->获取页面中元素用的 jQuery(); -> $() $()就是 jQuery 的选择器,就是创建 jQuery 这个类的一个实例 2)执行的时候需要传递两个参数 selector -> 选择器的类型 一般都是string类型 context -> 获取的上下文 第二个参数一般不传,不传默认为document $("#div1") $(".box") $("#div1 span") -> $("span", div1) console.log($("#div1 span:first")) 3)通过选择器获取的是一个 jQuery 类的实例->jQuery 对象 console. log($( #div1")) [jQuery对象的私有的属性] $("#div1")[0] -> div1这个元素对象 S(#div1").selector -> "#div1" S(#div1").context -> document ("#div1").length-)1 获取元素的个数 [jQuery对象的公有的属性] jQuery.prototype 4)我们获取的是 jQuery 对象(他是 jQuery 的实例)不是我们的原生 js 对象 jQuery:$("#div1") JS:document.getElementById("div1") 原生JS的对象不能直接的使用jQuery的方法,同理,jQuery的对象也不能使用原生js的方法 $("#div1").className = "box"; no document.getElementById("div1").addClass(); 5)互相转化 var $oDiv =$("#div1") var oDiv = document.getElementById("div1") Js->jQuery: $(oDiv).addClass() jQuery->Js: $oDiv[o]/ $oDiv.get(0) 3、核心 $(document).ready(function() { //HTML结构加载完成就执行这里的代码 }); $(function() {}); each $("selector").each( function(){})遍历获取的这些元素 jQuery.prototype $.each(ary)遍历数组中的每一项 jQuery.each 我们的 jQuery 不仅仅是一个类(在它的原型上定义了很多的方法,每一个 jQuery 的实例都可以使用这些方法),它还是一个普通的对象,在 jQuery 本身的属性中还增加了一系列的方法:Ajax、each、工具 $.unique(ary) $.ajax() $.extend()->把 jQuery当做一个对象,给它扩展属性->完善类库 $.fn.extend()->在 jQuery的原型上扩展属性和方法->编写 jQuery插件 $.extend({ a: function(){ } }) $.a() $.fn.extend({ b: function(){ } }) $().b()

茶什i 2019-12-02 03:21:18 0 浏览量 回答数 0

回答

由于事件冒泡机制,除非在事件处理过程中被主动阻止冒泡(e.stopPropagation()),否则会将事件传递到document元素上。因此,在document元素上捕获click事件,并判断触发事件的元素有没有你想要的CSS类,就可以做到,动态增加的DOM元素的相应事件也能够被正确的处理。 在旧版jQuery,对应着live()/delegate()方法;新版的jQuery,阉割掉了live和delegate方法,用On来处理。 以下摘自jQuery文档: $( selector ).live( events, data, handler ); // jQuery 1.3+ $( document ).delegate( selector, events, data, handler ); // jQuery 1.4.3+ $( document ).on( events, selector, data, handler ); // jQuery 1.7+ 所以对于楼主的要求就是: $( document ).on( "click", ".userlist", function(){ //你的事件处理过程 $('#username').val($(this).val()); }); // jQuery 1.7+

小旋风柴进 2019-12-02 02:19:09 0 浏览量 回答数 0

回答

jquery的$.delay()方法设置一个延时来推迟执行队列中之后的项目。这个方法不能取代JS原生的setTimeout。 The .delay() method is best for delaying between queued jQuery effects. Because it is limited—it doesn't, for example, offer a way to cancel the delay—.delay() is not a replacement for JavaScript's native setTimeout function, which may be more appropriate for certain use cases.例子:在.slideUp() 和 .fadeIn()之间延时800毫秒。HTML 代码: jQuery 代码:$('#foo').slideUp(300).delay(800).fadeIn(400); 通过循环消耗cpufunction sleep(n) {var start = new Date().getTime();while(true) if(new Date().getTime()-start > n) break;} 用setTimeout。假设有三个步骤,步骤之间需要暂停一段时间;可以采用如下的方法: function firstStep() {//do somethingsetTimeout("secondStep()", 1000);}function secondStep() {//do somethingsetTimeout("thirdStep()", 1000);}function thirdStep() {//do something} ps:来源网络

元芳啊 2019-12-02 00:54:52 0 浏览量 回答数 0

阿里云高校特惠,助力学生创业梦!0元体验,快速入门云计算!

学生动手场景应用,快速了解并掌握云服务器的各种新奇玩法!

问题

(function($) { $.fn.extend({ 方法(); }); }(jquery));能不能取到里面的方法

a123456678 2019-12-01 20:24:01 1031 浏览量 回答数 1

回答

方法 1如果这几个元素没什么关系的话,可以采取封装函数的方法减小粒度:感谢@Zephor 和@蛋蛋超人 提醒,此处确实有误,我改正。 $("#buy_price").blur(function(){ price_num(); }); $("#buy_num").blur(function(){ price_num(); }); function price_num() { var price = $("#buy_price").val(); var num = $("#buy_num").val(); $("#buy_result").html(price*num); }; 一定要明白,jQuery是利用了JavaScript的特性扩展了语法,原生js在任何时候都是可用的,包括在jQuery的动作里面嵌套。 方法 2还有一种方法,非常简单: $("#buy_price,#buy_num").blur(function(){ var price = $("#buy_price").val(); var num = $("#buy_num").val(); $("#buy_result").html(price*num); }); 逗号隔开即可。

小旋风柴进 2019-12-02 02:19:15 0 浏览量 回答数 0

回答

jQuery = function(selector, context) { // The jQuery object is actually just the init constructor 'enhanced' // Need init if jQuery is called (just allow error to be thrown if not included) return new jQuery.fn.init(selector, context); } init = jQuery.fn.init = function(selector, context) {} init.prototype = jQuery.fn看上面这三段代码,可以了解$(...)返回的是一个 jQuery.fn.init 对象,jQuery.fn.init 是一个构造函数,其原型就是 jQuery.fn。再看看 jQuery.fn 的定义(精简代码)jQuery.fn = jQuery.prototype = { jquery: version, constructor: jQuery, // The default length of a jQuery object is 0 length: 0, toArray: function() {}, each: function(callback, args) {}, map: function(callback) {}, slice: function() {}, // For internal use only. // Behaves like an Array's method, not like a jQuery method. push: push, };可以看到这是一个类似数组的对象,所以 $(...) 得到的是一个类数组对象,而不是真正的数组,用 Array.isArray 很容易检查出来。它作为原型,提供了 each 和 map 等方法。如果要把它变成真正的数组,需要调用其 toArray() 方法

小旋风柴进 2019-12-02 02:22:57 0 浏览量 回答数 0

回答

1 jQuery(selector,context) 简要的说是:接收一个css选择器表达式(selector)和可选的选择器上下文(context),返回一个包含了匹配的DOM元素的jQuery对象。 默认情况下,对匹配元素的查找都是从根元素ducument对象开始,也就是说查找范围是整棵文档树。但是如果给定了上下文context,则在指定上下文中查找 html <span>body span</span> <span>body span</span> <span>body span</span> <div class="wrap"> <span>wrap span</span> <span>wrap span</span> <span>wrap span</span> </div> js $('span').css('background-color','red');//所有的span都会变红 $('span','.wrap').css('background-color','red');//只有.wrap中的span会变红 2 jQuery(html,ownerDocument) 、jQuery(html,props) 用所提供的html代码创建DOM元素 对于jQuery(html,ownerDocument),参数html可以是单标签或者是多层标签之间的嵌套。第二个参数用于创建新DOM元素的文档对象,如果不传入则默认为当前的文档对象。 //单标签 两种方式都可以往body中插入div /* * 1 $('<div>').appendTo('body'); * 2 $('<div></div>').appendTo('body'); */ // 多标签嵌套 $('<div><span>dfsg</span></div>').appendTo('body'); 另外:对于单标签,jQuery(html,props),props是一个包含属性和事件的普通的对象,用法如下。(该用法有待考证,请知道这一用法的童鞋告知一下,感激不尽) $('<div>我是div</div>',{ title:'我是新的div', click:function(){ $(this).css('color','red'); console.log(this); } }).appendTo('body'); 3 jQuery(element or elementsArray) 如果传入一个DOM元素或者是DOM元素的数组,则把DOM元素封装到jQuery对象中并返回。 html <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> </ul> js // 传入DOM元素 $('li').each(function(index,ele){ $(ele).on('click',function(){ $(this).css('background','red');//这里的DOM元素就是this }) }) //传入DOM数组 var aLi=document.getElementsByTagName('li'); aLi=[].slice.call(aLi);//集合转数组 var $aLi=$(aLi); $aLi.html('我是jQuery对象');//所有的li的内容都变成'我是jQuery对象' 4 jQuery(object) 如果传入的是一个object对象,则把该对象封装到jQuery对象中并返回。 var obj={name:'谦龙'}; var $obj=$(obj);//封装成jQuery对象 //绑定自定义事件 $obj.on('say',function(){ console.log(this.name)//输出谦龙 }); $obj.trigger('say'); 5 jQuery(callback) 当传进去的参数是函数的时候,则在document对象上绑定一个ready事件监听函数,当DOM结构加载完成的时候执行 $(function(){ }) //以上代码和下面的效果是一样的 $(document).ready(function(){ ...//代码 }) 6 jQuery(jQuery object) 当传进去的参数是一个jQuery对象的时候,则创建该jQuery对象的一个副本并返回。副本与传入的jQuery对象引用完全相同的元素 var aLi=$('li'); var copyLi=$(aLi);//创建一个aLi的副本 console.log(aLi); console.log(copyLi); console.log(copyLi===aLi); 图片描述 7 jQuery() 如果不传入任何的参数,则返回一个空的jQuery对象,属性length为0 注意这个功能可以用来复用jQuery对象,例如可以创建一个空的jQuery对象,然后在需要的时候先手动修改其中的元素,然后在调用jQuery方法。从而避免重复创建jQuery对象。

问问小秘 2020-04-29 16:39:03 0 浏览量 回答数 0

回答

有点明白了,哈哈,异步的话,还是用回调函数吧   getData(function(data){ xxx; }); function getData(callback){ ...; callback(data); ...; } ######ajax可以设置同步!######可以试试用 $.Deferred###### 引用来自“con”的评论 可以试试用 $.Deferred 谢谢,刚才看dom数发现trigger和triggerHandler函数,一查也是看到了deffered,正在试,不过没有试验成功,希望能指导下 使用的jquery1.10.2和easyui1.4 简单地就是一个二级联动菜单,一个事件是一级菜单联动二级菜单,另外一个事件是载入数据的时候将数据写入(不过因为二级菜单跟着一级菜单走,所以得等到二级菜单载入完毕才能写入数据) 下面的代码都是放在$()里面的 //设置一级菜单的二级菜单联动 $('#topic1').combobox({ onChange:function(n,o){ topic2Loaded=false;//因为没有搞懂deferred用法,这个是加的全局变量准备用全局变量来判断 var f_s; //alert(1); f_s=getTopic2(n);    //这个是我现在的简单的存储处理方法 if(f_s==false){ $.post('../server/t_getsubtopic.php',{father:n},function(data,sta,xhr){ jQuery('#topic2').combobox('clear').combobox('loadData',data.topic); eval('db_topic2.'+'f'+n+'=data.topic;'); topic2Loaded=true; },'json'); }else{ jQuery('#topic2').combobox('clear').combobox('loadData',f_s); topic2Loaded=true; } } });        //初始化编辑器的显示内容 jQuery.post('../server/t_editorinit.php',function(data,sta,xhr){ var jjj; jQuery('#topic1').combobox('clear').combobox('loadData',data.topic); jQuery('#saved').attr('value',1); jQuery('#subject').combobox('clear').combobox('loadData',data.subject); if(data.topic.length==0){ jQuery.messager.alert('提示','当前无权限进行操作,请登陆后刷新本页面。','info'); //jQuery('#saved').window('close'); }else{ //是否读取数据,如果是的话读取数据 var id=getURLRequest('id'); if(id){ jQuery.post('../server/getcontent.php',{id:id},function(data,sta,xhr){ var topic=data.path[0]; //jQuery.when(jQuery('#topic1').combobox('select',topic.father.index);); jQuery('#topic1').combobox('select',topic.father.index);                                         //这里就没有看懂,包括看的jquery的api里面then貌似已经废弃了的,这里执行不下去 // jQuery.when(jQuery('#topic1').triggerHandler( // 'onChange',jQuery('#topic1').combobox('getValue') // )).done(jQuery('#topic2').combobox('select',topic.son.topicid)); jQuery('#topic2').combobox('select',topic.son.topicid); //jQuery('#saved').attr('saved')=1; },'json'); } } },'json'); ###### 试了半天没有试出来,现在这样做的,但是看着好丑…… 最主要是如果超500ms没有完成载入就丑了…… jQuery.post('../server/getcontent.php',{id:id},function(data,sta,xhr){ var topic=data.path[0];         jQuery('#topic1').combobox('select',topic.father.index).delay(500).queue(function(){             jQuery('#topic2').combobox('select',topic.son.topicid);         }); jQuery('#saved').attr('saved')=1; },'json'); ###### 1、首先是通过Deferred实现的数据存储 // 存储函数 function getData(dfd, name) { var sdata = []; // 缓存所有ajax请求过的数据 if ( sdata[name] ){ dfd.resolve( sdata[name] ); } else { $.ajax({ url: xxx, }).done( function (data) { sdata[name] = data; dfd.resolve( data ); }) } } // 调用方式 var dfd = $.Deferred(); dfd.done( function (data) { // 拿到数据后要执行的操作 }); getData(dfd, "name1"); Deferred对象的使用方式大抵如上。 2、combobox二级菜单 简单看了下easyui combobox的api,一级菜单被选择时,更新二级菜单内容,可以用类似下面的写法: $("#level_1").combobox({ onSelect: function (record) { // 获取二级菜单内容并缓存,调用上面的getData var dfd = $.Deferred(); dfd.done(function (data) { $("#level_2").combobox( 'loadData', data); }); //这里的record不知道是个啥东西,可能需要加工一下再传入getData getData(dfd, record); } }); 不知道这种方式是不是能满足你说的菜单联动和缓存数据的需求 ###### 引用来自“con”的评论 1、首先是通过Deferred实现的数据存储 // 存储函数 function getData(dfd, name) { var sdata = []; // 缓存所有ajax请求过的数据 if ( sdata[name] ){ dfd.resolve( sdata[name] ); } else { $.ajax({ url: xxx, }).done( function (data) { sdata[name] = data; dfd.resolve( data ); }) } } // 调用方式 var dfd = $.Deferred(); dfd.done( function (data) { // 拿到数据后要执行的操作 }); getData(dfd, "name1"); Deferred对象的使用方式大抵如上。 2、combobox二级菜单 简单看了下easyui combobox的api,一级菜单被选择时,更新二级菜单内容,可以用类似下面的写法: $("#level_1").combobox({ onSelect: function (record) { // 获取二级菜单内容并缓存,调用上面的getData var dfd = $.Deferred(); dfd.done(function (data) { $("#level_2").combobox( 'loadData', data); }); //这里的record不知道是个啥东西,可能需要加工一下再传入getData getData(dfd, record); } }); 不知道这种方式是不是能满足你说的菜单联动和缓存数据的需求 谢谢,因为没用过所以还不太清楚,不过我就当是回调函数理解的话貌似这样的确可以解决问题,有时间的时候我会试着用这个代码并学习一下deferred这个有用的东西的。 至于之前我的解决方式整体就是这样的,不过有eval在里面真的好丑…… var db_topic2={};//用于存储topic2的本地数据,以免频繁进行查询 function getTopic2(father){ //通过查询本地dbTopic2来获取topic2的数据,如果没有的话才进行远程查询 // father='f'+father;//转换为字符 var flag; eval('flag=db_topic2.'+father+';'); if(flag){ return flag; }else{ //通过数据进行查询 return false; } } //设置一级菜单的二级菜单联动 $('#topic1').combobox({ onChange:function(n,o){ $('#saved').prop('value','0');//设置未保存 var f_s; f_s=getTopic2(n); if(f_s==false){ $.post('../server/t_getsubtopic.php',{father:n},function(data,sta,xhr){ jQuery('#topic2').combobox('clear').combobox('loadData',data.topic); eval('db_topic2.'+'f'+n+'=data.topic;'); },'json'); }else{ jQuery('#topic2').combobox('clear').combobox('loadData',f_s); } } }); //载入数据时候的设置 jQuery('#topic1').combobox('select',n.father.index).delay(500).queue(function(){ jQuery('#topic2').combobox('select',n.son.topicid); $(this).dequeue(); }).delay(500).queue(function(){ //因为存在延时,所以得在这里再延时设置已保存状态 $('#saved').prop('value','1');//设置已保存 $(this).dequeue(); }); 看着很丑吧…… ###### /* * 获取数据方法 * name: 数据key * fn: 回调函数 */ function getData(name, fn) { if(typeof getData.cache[name] != "undefined") { fn(getData.cache[name]); return; } $.post("index.php", { name: name }, function (data) { getData.cache[name] = data; fn(data); }, "json"); } getData.cache = {}; //使用实例 getData("user", function (user) { alert(user.name); }); ###### 引用来自“mr-zhuo”的评论 /* * 获取数据方法 * name: 数据key * fn: 回调函数 */ function getData(name, fn) { if(typeof getData.cache[name] != "undefined") { fn(getData.cache[name]); return; } $.post("index.php", { name: name }, function (data) { getData.cache[name] = data; fn(data); }, "json"); } getData.cache = {}; //使用实例 getData("user", function (user) { alert(user.name); }); 谢谢,用回调函数适用范围应该更广一些。###### 这里有篇关于deferred的,不错。 http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html

kun坤 2020-06-07 00:35:34 0 浏览量 回答数 0

回答

jQuery 1.8之后就不支持事件的切换,仅用来元素的隐藏与显示。不过,可以通过自己写代码实现。1.通过flag来控制执行执行哪个函数。比如执行fn1时,flag置为true;执行fn2时,flag置为false.2.通过给元素加减class来控制那个函数。和方法1类型。3.代码实现toggle,避免方法1和方法2中添加变量和操作dom,毕竟这两个都需要开销,原理类似于递归调用,代码如下。$('#btn').one('click', function(){ handler1();//第一次已经是click了,所以需要先执行一次handler1 setTimeout(fn1, 200);//防止后面定义的事件被触发。 }); function fn1(){ var obj = $(this); obj.one('click',function(){ handler2(); fn2(obj); }); } function fn2(obj){ obj.one('click',function(){ handler1(); fn1(obj); }); } function handler1(){ console.log('11'); } function handler2(){ console.log('22'); }当然为了使用方便,也可以封装成jQuery插件的模式。 $.fn.toggleEx = function(handler1, handler2){ $(this).one('click', function(){ handler1(); setTimeout(fn1, 200);//防止后面定义的事件被触发。 }); function fn1(){ var obj = $(this); obj.one('click',function(){ handler2(); fn2(obj); }); } function fn2(obj){ obj.one('click',function(){ handler1(); fn1(obj); }); } } //使用方式和之前一样。 $('#btn').toggleEx(function(){ console.log('11'); }, function(){ console.log('22');

小旋风柴进 2019-12-02 02:28:33 0 浏览量 回答数 0

回答

Zepto 对象 不能自定义事件 例如执行: $({}).bind('cust', function(){}); 结果: TypeError: Object has no method 'addEventListener' 解决办法是创建一个脱离文档流的节点作为事件对象: 例如: $('').bind('cust', function(){}); Zepto 的选择器表达式: [name=value] 中 value 必须用 双引号 " or 单引号 ' 括起来 例如执行:$('[data-userid=123123123]') 结果:Error: SyntaxError: DOM Exception 12 解决办法: $('[data-userid="123123123]"') or \$("[data-userid='123123123']") 2-1.zepto 的选择器没有办法选出 \$("div[name!='abc']") 的元素 2-2.zepto获取select元素的选中option不能用类似jq的方法$('option[selected]'),因为selected属性不是css的标准属性 应该使用$('option').not(function(){ return !this.selected }) 比如:jq:$this.find('option[selected]').attr('data-v') * 1 zepto:$this.find('option').not(function() {return !this.selected}).attr('data-v') * 1 但是获取有select中含有disabled属性的元素可以用 $this.find("option:not(:disabled)") 因为disabled是标准属性 参考网址:https://github.com/madrobby/zepto/issues/503 2-3、zepto在操作dom的selected和checked属性时尽量使用prop方法 Zepto 是根据标准浏览器写的,所以对于节点尺寸的方法只提供 width() 和 height(),省去了 innerWidth(), innerHeight(),outerWidth(),outerHeight() Zepto.js: 由盒模型( box-sizing )决定 jQery: 忽略盒模型,始终返回内容区域的宽/高(不包含 padding 、 border )解决方式就是使用 .css('width') 而不是 .width() 。 3-1.边框三角形宽高的获取 假设用下面的 HTML 和 CSS 画了一个小三角形: <div class="caret" > </div > .caret { width: 0; height: 0; border-width: 0 20px 20px; border-color: transparent transparent blue; border-style: none dotted solid; } jQuery 使用 .width() 和 .css('width') 都返回 ,高度也一样; Zepto 使用 .width() 返回 ,使用 .css('width') 返回 0px 。 所以,这种场景,jQuery 使用 .outerWidth() / .outerHeight() ;Zepto 使用 .width() / .height() 。 3-2.offset() Zepto.js: 返回 top 、 left 、 width 、 height jQuery: 返回 width 、 height 3-3.隐藏元素 Zepto.js: 无法获取宽高; jQuery: 可以获取。 Zepto 的 each 方法只能遍历 数组,不能遍历 JSON 对象 Zepto 的 animate 方法参数说明 :详情点击-> zepto 中 animate 的用法 zepto 的 jsonp callback 函数名无法自定义 DOM 操作区别 jq 代码: (function($) { $(function() { var $list = $("<ul><li>jQuery 插入</li></ul>", { id: "insert-by-jquery" }); $list.appendTo($("body")); }); })(window.jQuery); jQuery 操作 ul 上的 id 不会被添加。 zepto 代码: Zepto(function($) { var $list = $("<ul><li>Zepto 插入</li></ul>", { id: "insert-by-zepto" }); $list.appendTo($("body")); }); Zepto 可以在 ul 上添加 id 。 事件触发区别 jq 代码: (function($) { $(function() { $script = $("<script />", { src: "http://cdn.amazeui.org/amazeui/1.0.1/js/amazeui.min.js", id: "ui-jquery" }); $script.appendTo($("body")); $script.on("load", function() { console.log("jQ script loaded"); }); }); })(window.jQuery); 使用 jQuery 时 load 事件的处理函数 不会 执行 zepto 代码: Zepto(function($) { $script = $("<script />", { src: "http://cdn.amazeui.org/amazeui/1.0.1/js/amazeui.js", id: "ui-zepto" }); $script.appendTo($("body")); $script.on("load", function() { console.log("zepto script loaded"); }); }); 使用 Zepto 时 load 事件的处理函数 会 执行。 zepto 阻止事件冒泡 zepto 的 slideUP 和 slidedown 事件到底部才能触发 document.addEventListener( "touchmove", function(event) { event.preventDefault(); }, false );

茶什i 2019-12-02 03:21:22 0 浏览量 回答数 0

问题

写JQuery插件的基本知识:报错

kun坤 2020-06-09 23:27:01 0 浏览量 回答数 1

回答

因为jquery获取css属性时,获取的是计算后的属性jquery.css() function (elem, name, extra) { var ret, hooks; // Make sure that we're working with the right name name = jQuery.camelCase(name); hooks = jQuery.cssHooks[name]; name = jQuery.cssProps[name] || name; // cssFloat needs a special treatment if (name === "cssFloat") { name = "float"; } // If a hook was provided get the computed value from there 在这里 if (hooks && "get" in hooks && (ret = hooks.get(elem, true, extra)) !== undefined) { return ret; // Otherwise, if a way to get the computed value exists, use that } else if (curCSS) { return curCSS(elem, name); } } 所以出来的是px值。若想要获得百分数值可以这样parseInt($('.show').css('width'))*100/parseInt($('body').css('width'))+"%"另外你给.show属性赋值的方法我看着好像是不对的,建议直接用.width()就可以了。再另外, style="width: 50%" 要不然.test的width都设置不了

小旋风柴进 2019-12-02 02:28:30 0 浏览量 回答数 0

回答

var nbsp; (function(){ nbsp = function(){ //内部方法 } }); (function(nbsp){ nbsp; }(nbsp)); /*------------------方法二----------------------*/ (function(){ $("#nbsp").bind("nbspfunc",function(){ //内部方法 }); }()); (function(){ $("#nbsp").trigger("nbspfunc"); }); 闭包需要传进去变量,你懂的类似于(function($){}(jQuery))

a123456678 2019-12-02 03:05:07 0 浏览量 回答数 0

回答

jQuery中有sort()方法可用,和Array.sort()方法一样。//递增 var asc = function(a, b) { return $(a).find('input').val() > $(b).find('input').val() ? 1 : -1; } //递减 var desc = function(a, b) { return $(a).find('input').val() > $(b).find('input').val() ? -1 : 1; } var sortByInput = function(sortBy) { var sortEle = $('.container>div').sort(sortBy); $('.container').empty().append(sortEle); }

小旋风柴进 2019-12-02 02:18:01 0 浏览量 回答数 0

回答

Ok,我知道了,原来是调用顺序的问题。在经过了不断刷新页面的过程中,发现偶尔会产生正确的结果(即#a使用uitooltip,#b使用bootstraptooltip)。原因是jqueryui.js(下称jqui)文件的大小是235kb,bootstrap.js(下称bs)文件大小是66kb,jqui需要较多时间去加载,因此,无论如何调换require的顺序,jqui总是后加载完成的。因此此时,在全局环境中的tooltip就是后加载完成的juqi tooltip了。所以$('#b').tooltip();就无法使用bs tooltip了。解决方法很简单,定义加载顺序,要求bs一定要在jqui加载完之后才载入,最后改成如下即可:require.config({ paths: { 'jquery': '../jquery.min', 'bootstrap': 'bootstrap', 'jqueryUI': 'jquery-ui/jquery-ui.min' }, shim: { 'bootstrap': { deps: ['jquery','jqueryUI'], } } }); require(['jquery','jqueryUI','bootstrap'], function (){ $(function(){ $.widget.bridge('uitooltip', $.ui.tooltip); $('#a').uitooltip(); $('#b').tooltip(); }); });

a123456678 2019-12-02 02:05:51 0 浏览量 回答数 0

回答

jquery中已经提供了这种延迟触发ready的方式。我们先来看一个正常顺序执行的例子:setTimeout(function(){ console.log('timeout'); }, 500); $(function(){ console.log('ready'); }) 这个例子中,肯定会首先输出ready,然后再输出timeout。 不过jquery提供了一个$.holdReady()方法来延迟ready的触发。 setTimeout(function(){ console.log('timeout'); // 不用再hold住ready方法了,释放,则现在触发ready方法 $.holdReady(false); }, 500); // 先把readyhold住,不让ready触发,$.holdReady(true)没有位置的限制,可以放到最上面 $.holdReady(true); $(function(){ console.log('ready'); }) 不过如果有多个组件(比如10个的话)都加载完成再触发ready的话,那是不是要写10个$.holdReady(true)呢。其实不用的,可以用$.readyWait来操作。把$.readyWait的值设置为限制的次数+1就行。如: setTimeout(function(){ console.log('timeout0'); $.holdReady(false); }, 500); setTimeout(function(){ console.log('timeout1'); $.holdReady(false); }, 500); setTimeout(function(){ console.log('timeout2'); $.holdReady(false); }, 500); $.readyWait = 4; $(function(){ console.log('ready'); })这样就能在三个setTimeout都执行完成后再执行ready。其实$.holdReady()在源码也是操作的$.readyWait的值,$.holdReady(true)让$.readyWait的值+1,$.holdReady(false)让$.readyWait的值-1,当$.readyWait的值为1时就触发ready。$.readyWait的默认值是1,所以默认会直接触发ready的。不过,这样直接使用$.readyWait不是很好,因为$.readyWait是对内使用的,对外提供的方法就是$.holdReady()。因此,若没有特别的情况,使用$.holdReady()就能控制ready的执行了。

小旋风柴进 2019-12-02 02:22:50 0 浏览量 回答数 0

问题

jQuery 获取和设置下拉选项框(select)的方法

a123456678 2019-12-01 20:17:09 1044 浏览量 回答数 1

问题

jquery 关于Deferred方法的疑问?

小旋风柴进 2019-12-01 19:37:23 764 浏览量 回答数 1

问题

求助Django+Jquery getJSON方法无法调用回调函数

吴孟桥 2019-12-01 19:36:31 1420 浏览量 回答数 1

问题

用jQuery写的图片轮播为何停止定时器只能停止一次?

小旋风柴进 2019-12-01 19:35:34 1464 浏览量 回答数 1

回答

jquery插件整上 $(window).resize()------监控浏览器窗口改变事件,一旦改变立即触发 $().height()--------------获取对象高度(不带单位) $().css("height")--------获取对象高度带单位(例:400px) 上面的朋友写了,我只是详细的解释下 方法一、 $(window).resize(function(){ $(".left").height($(".right").height()); }); 方法二、 $(window).resize(function(){ $(".left").css({"height":$(".right").css("height")}

a123456678 2019-12-02 03:08:43 0 浏览量 回答数 0

问题

jquery的hide()方法,在IE7或者8下面的兼容性问题?

a123456678 2019-12-01 20:17:09 1136 浏览量 回答数 1

问题

[requirejs]为什么会提示其中一个依赖 undefined??报错

爱吃鱼的程序员 2020-06-14 21:07:29 0 浏览量 回答数 1

问题

Jquery 中function的options参数问题

a123456678 2019-12-01 20:22:31 639 浏览量 回答数 1

问题

innerHTML vs jQuery .html() 有什么分别?

小旋风柴进 2019-12-01 19:30:39 829 浏览量 回答数 1

问题

jquery的$符能返回默认dom对象吗?

小旋风柴进 2019-12-01 19:35:09 815 浏览量 回答数 1

回答

禁用很简单,如果是比较新的jquery,可以直接用$(window).off('scroll')(旧版本jquery使用unbind方法)把scroll事件解绑,但如果要重新启用相同函数的话,在绑定的时候不要使用匿名函数做参数,不然就得重新把绑定函数写一次,可以参考下面代码:function doSth () { // do something } // 绑定scroll事件 $(window).on('scroll', doSth); // 解绑scroll事件 $(window).off('scroll', doSth);没有on/off方法的旧版本jquery可以使用bind/unbind方法。

小旋风柴进 2019-12-02 02:28:26 0 浏览量 回答数 0

问题

如何把jQuery数组中取出的元素包装成jQuery对象

蛮大人123 2019-12-01 20:13:42 807 浏览量 回答数 1

问题

jquery的focus()和原生js的focus()冲突了,怎么在引用jquery的前提下调用原生focus()?

a123456678 2019-12-01 20:20:00 920 浏览量 回答数 1

问题

jquery的focus()和原生js的focus()冲突了,怎么在引用jquery的前提下调用原生focus()?

小旋风柴进 2019-12-01 19:37:13 990 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站