Tag: javascript

为什么在JavaScript中使用回调,它的优点是什么?

有人可以解释一下,为什么我们在JavaScript中使用回调? 我找到了示例,但它们可以通过使用普通函数来实现。 使用它有什么好处? 我得到了“如何”使用它的答案,而不是“为什么和何时”我们需要使用它。 通常,我发现它在AJAX中使用。 在httpRequest.onreadystatechange 。 这与Java的multithreading类似吗? 响应的听众如何以及在哪里? 异步编程是否类似于multithreading? 在以下代码中,控制流程如何: function some_function(arg1, arg2, callback) { var my_number = Math.ceil(Math.random() * (arg1 – arg2) + arg2); callback(my_number); some_different_function_not_callback(arg1); } some_function(5, 15, function(num) { console.log(“callback called! ” + num); }); 来自JQuery网站: 关于回调的特殊之处在于,在“父”之后出现的函数可以在回调执行之前执行“(参考: http : //docs.jquery.com/Tutorials : How_jQuery_Works ) 有人可以用一个例子向我解释这一行吗?

如何使用JQuery AJAX阻止Firefox使用HTTP Basic Auth提示用户名/密码?

我正在编写一些浏览器端动态function,并使用HTTP Basic Auth来保护一些资源。 用户体验非常重要,并且高度定制。 这是一个简单的测试JQuery方法,最终将测试用户是否在表单中提供了正确的凭据: $(document).ready(function() { $(“#submit”).click(function() { var token = Base64.encode($(‘#username’).val() + ‘:’ + $(‘#password’).val()); $.ajax({ url: ‘/private’, method: ‘GET’, async: false, beforeSend: function(req) { req.setRequestHeader(‘Authorization’, ‘test:password’); }, error: function(request, textStatus, error) { if (request.status == 401) { alert(‘401’); } } }); return false; }); }); 如果他们不被允许访问/private ,他们此刻应该只看到警报框。 但是,在Firefox上,会弹出一个浏览器提供的登录表单(使用新凭据重试)。 Safari不会这样做。 我们希望通过自定义表单,淡入淡出,转换等完全控制体验。如何防止Firefox的默认框显示? (如果我们测试IE时会出现这个问题,我也很乐意在那里听到解决方案。)

在Jquery / Javascript中检查URL

我需要的是一个方法,如果Url响应,则返回true。 不幸的是,我是jQuery的新手,这让我尝试编写这种方法相当令人沮丧。 我已经看过几个使用.ajax的jQuery示例,但代码一直在我身上失败。 怎么了? var urlExists = function(url){ //When I call the function, code is still executing here. $.ajax({ type: ‘HEAD’, url: url, success: function() { return true; }, error: function() { return false; } }); //But not here… }

KnockoutJS – select与optgroup和javascript对象的绑定值

我在这里找到了一个示例,使用KnockoutJS创建一个带有optgroups的选择列表。 这工作正常,但我想将下拉列表的值绑定到我自己的javascript对象,然后访问该对象的特定属性: function Group(label, children) { this.label = ko.observable(label); this.children = ko.observableArray(children); } function Option(label, property) { this.label = ko.observable(label); this.someOtherProperty = ko.observable(property); } var viewModel = { groups: ko.observableArray([ new Group(“Group 1”, [ new Option(“Option 1”, “A”), new Option(“Option 2”, “B”), new Option(“Option 3”, “C”) ]), new Group(“Group 2”, [ new Option(“Option 4”, “D”), […]

为什么这在jsfiddle中有效,但在我的文档中却没有

我找到了一个很棒的jsfiddle,有人制作并希望在我的项目中使用它的一部分: http://jsfiddle.net/manuel/29gtu/ 它适用于jsfiddle,但不适用于我的HTML文档。 这是我的文件中的内容: $(“button”).click(function() { var id = $(“#id”).val(); var text = “icon-“+id; // update the result array var result = JSON.parse(localStorage.getItem(“result”)); if(result == null) result = []; result.push({id: id, icon: text}); // save the new result array localStorage.setItem(“result”, JSON.stringify(result)); // append the new li $(“#bxs”).append($(“”).attr(“id”, “item-“+id).html(text)); }); // on init fill the ul […]

如何在JQuery中循环Ajax请求何时 – 然后声明?

我试图从API异步加载一堆数据,当加载所有数据时,我想触发一个所有数据都被加载的事件。 我遇到的问题是我使用的API将响应对象的数量限制为五个。 我可能需要检索30-40个响应对象。 所以我想要做的是创建一个when – then语句循环通过数据项并对每五个项目发出请求,然后当所有项目都被加载时我想触发一个加载的事件。 我遇到的问题是when-then语句在ajax请求成功之前完成。 到我试过的代码。 function loadsLotsOfStats(stats, dataType, eventName, dataName, callback) { var groupedStats = []; while (stats.length > 0) { groupedStats.push(stats.splice(0, 5).join(‘/’)); } j$.when( groupedStats.forEach(function (d) { loadJSONToData(model.apiUrl.replace(“{IDS}”, d), “json”, “”, dataName, function (d) { /*console.log(d);*/ }, true) }) ).then(function () { j$(eventSource).trigger(‘dataLoaded’, eventName); }); loadJSONToData函数基本上只是Async $ .ajax的包装函数。 所以是的,事件是在实际加载数据之前触发的。 也是出于某种原因,如果我尝试在当时正确地循环(通过语法错误声明它? 有没有人对如何制作一堆Ajax请求有任何建议,并等到它们全部在触发事件之前都被竞争? […]

Angular 2在渲染元素后调用jQuery – 在使用API​​之后

我的Angular2应用程序使用RESTful API,然后根据结果创建一堆元素。 我试图在这些元素上调用jQuery函数,但看起来jQuery函数执行得太迟了。 我尝试将函数放在ngAfterContentInit但这不起作用。 把它放在ngAfterViewChecked冻结了我的浏览器。 页面渲染后,如果我将jQuery函数粘贴到控制台中,一切正常,所以我知道我的函数和一切都是有用的。 他们的订单可能搞砸了或其他什么。 在我的组件中: ngOnInit() { this.myService.getAll().subscribe( data => this._data = data, error => this._error = “invalid.”); } ngAfterViewInit() { $(“select”).select2(); // <— jQuery function I need to execute after rendering } 在我的模板中: …blah blah

jQuery中的attr()是否强制小写?

我正在尝试操纵svg’viewBox’属性,它看起来像这样: … 运用 $(“svg”).attr(“viewBox”,”…”); 但是,这会在名为“viewbox”的元素中创建一个新属性。 注意小写而不是预期的camelCase。 我应该使用另一种function吗?

window.close()在Firefox上不起作用,有什么解决方法吗?

我试图使用window.close()关闭一个窗口,但这只适用于IE浏览器,但不适用于Firefox。 有没有人遇到这个和任何工作? 谢谢…

jquery:最快的DOM插入?

我对如何插入大量HTML感觉不好。 让我们假设我们得到: var html=” …. ” 我想把它放进去 $(“#mydiv”) 以前我做过类似的事情 var html_obj = $(html); $(“#mydiv”).append(html_obj); jQuery解析html创建DOM对象是否正确? 这就是我在某处读到的内容(更新:我的意思是我已经读过,jQuery解析html手工创建整个DOM树 – 它的废话对吧?! ) ,所以我改变了我的代码: $(“#mydiv”).attr(“innerHTML”, $(“#mydiv”).attr(“innerHTML”) + html); 感觉更快,是吗? 这是否正确,这相当于: document.getElementById(“mydiv”).innerHTML += html ? 或者是jquery在后台做一些额外的昂贵的东西? 也愿意学习替代品。