是DOM操作(使用jQuery还是其他)异步?
我正在使用selectWithCircle函数来选择带有jQuery的元素,并为它们添加一个类“active”。
var selectWithCircle = function(el){ if(!el.hasClass('active')){ el.addClass('active'); } }
然后通过对相同的元素做另一个选择,如果元素具有类’active’,我需要对它们做一些事情
jQuery('label.ico-btn').click(function(event){ var $this = jQuery(this); selectWithCircle($this); jQuery('label').each(function(index,item){//am I sure that this runs after selectWithCircle()? if(jQuery(item).hasClass('active')){ //do something } }); });
我确定当我循环遍历jQuery(’label’)选择函数selectWithCircle做了它的工作吗?
更一般地说,jQuery选择操作是以Sync方式执行的吗?
设置输入的值是同步的。 您将可靠地获得更新的值,跨浏览器。 其他DOM操作(如插入元素,删除它们,移动它们)也是同步的,尽管用户可能在JavaScript代码完成之前看不到结果,让浏览器使用线程重新绘制显示。
你的代码工作得很好
JQuery是同步和单线程的。 如果您运行代码,另一个将等待它成功。
JQuery只在Ajax调用中是异步的,它不会中断当前正在运行的任何其他代码。 除了async: false
选项
是的, jQuery
选择和装饰是synchronously
完成的。 即使它可能感觉不是,所有DOM操作也是synchronous
。