重构 jQuery in JS 问题
Refactoring jQuery in JS issues
我经常使用jQuery,但我意识到我需要更好地理解底层Javascript。我已经解决了 AJAX 部分,但卡在嵌套函数上。任何帮助将不胜感激。
document.onreadystatechange = function() {
var state = document.readyState;
if (state == 'interactive') {
$('#button').on("click", function() {
$.getJSON(apiurl, function(json) {
$.each(json.photos.photo, function(i, myresult) {
apiurl_size = "https//api/myresult";
$.getJSON(apiurl_size, function(size) {
$.each(size.sizes.size, function(i, myresult_size) {
if (myresult_size.width == selected_size) {
$("#results").append('<p class="col-md-4"><a href="" ><img src="' + myresult_size.source + '"/></a></p>');
}
})
})
});
});
});
} else if (state == 'complete') {
document.getElementById('complete');
}
}
我想知道的:
如何在
$('button')
中获取 id 选择器,因为document.getElementById('button')
返回整个元素,但我无法制定.on click
功能(将
.getJSON
函数分解为纯JS可重用函数
-
$("#button").on("click", cb_function)
类似于document.getElementById("button").addEventListener("click", cb_function)
。如果您使用的是可以匹配多个元素的选择器,则它类似,只是它循环遍历所有返回的元素以向所有元素添加事件侦听器。 -
$.getJSON(URL, cb_function)
创建对 URL 的 AJAX 请求,其onreadystatechange
回调函数实质上是执行以下操作:- 呼叫响应
JSON.parse()
。 - 使用分析结果调用
cb_function
。
- 呼叫响应
一个简单的版本是这样的:
function getJSON(url, cb_function) {
var xhr = new XMLHTTPRequest();
xhr.open("GET", url);
xhr.onreadystatechange = function() {
if (xhr.readystate == 4 && xhr.status == 200) {
cb_function(JSON.parse(xhr.responseText));
}
}
xhr.send();
return xhr;
}
真正的$.getJSON
允许您向 URL 提供参数,它会自动从对象转换为适当的 URL 编码字符串以添加为 URL 参数。但是您的两个调用都没有数据参数,因此此定义应该适合您。
相关文章:
- 灯光问题(使用三个.js)
- angular js密码强度显示问题
- 我在启动我的节点时遇到问题.js IRC 机器人
- 节点中的 CORS 问题.js失败
- 关于骨干的几个问题.js
- 使用时刻验证日期时出现问题.js按格式
- 嵌入棋盘时遇到问题.js
- 在印象中面临问题.js旋转木马
- 高图表重新加载骨干网的问题.js
- 骨干问题.js和字母 ID 问题
- 重复出现问题(JS/HTML)
- 获取子字符串问题(js.或jquery)
- 实时滚动问题(JS)
- 事件处理问题JS
- CRM 2011 -动态更改表单问题- JS错误(无法执行代码…)
- 显示正确输出的问题.JS单选按钮的选择和添加
- 使用外部 dom 按钮在 Highchart 中向下和向上钻取的问题.js
- 复选框数组的问题 [JS, Jquery]
- 节点从 0.2.6 升级到 0.4.7 时出现超时问题.js
- 删除cookie问题JS-COOKIE