考虑以下示例代码:
<span>
<input type="checkbox">
</span>
Run Code Online (Sandbox Code Playgroud)
$('span').click(function(e) {
e.preventDefault();
$(':checkbox')[0].checked = true;
});
Run Code Online (Sandbox Code Playgroud)
据我所知,这应该发生:
preventDefault()应该阻止浏览器的默认行为检查复选框,即使事件处理程序附加在DOM层次结构的上方.这部分工作正常..checked = true应该起作用,我相信它应该独立于浏览器对我已取消的事件的默认操作.这部分看起来很麻烦,好像它preventDefault()正在影响它 - 删除preventDefault()它并按预期工作.复选框始终未选中的实际原因是什么?
我已经在Chrome 33和Firefox 27上进行了测试,所以这似乎不是一个浏览器错误.
这个问题主要是由于好奇心扩展我的DOM /事件模型知识.我不想要解决方法,而是想知道为什么这个例子失败了.
我在小提琴中设置了select3 option秒(1个空白).当我从手动切换foo到bar手动时,change监听器会正常触发.
现在,如果我select使用在此处的某些答案中发布的代码重置直通JS ,则change事件不会针对新选择的空白选项触发,此外,如果我选择在单击reset按钮之前选择的选项,则onchange事件将不会触发.
我敢肯定select的价值是被上面的功能,都可以在此看到改变小提琴,但select的onchange事件根本不火.
我也试过onchange,onclick,oninput事件无济于事.现在我想知道我是否应该使用MutationObserver或从DOM中删除渲染的选定元素并创建另一个,但我可能会过度思考它.任何帮助表示赞赏.
也:
这个答案对我有很大帮助:jQuery Chosen重置
这个答案没有帮助:如何在选择的原型javascript选择框中触发onchange事件?
如果jsfiddle.net被删除,将来参考的代码:
HTML
<div id="wrapper">
<select id="chosen">
<option value="!!EMPTY VALUE!!"></option>
<option value="foo">foo</option>
<option value="bar">bar</option>
</select>
</div>
<br>
<button id="reset">Reset</button>
Run Code Online (Sandbox Code Playgroud)
JS
$(function() {
$('#chosen').chosen();
$('#wrapper').on('change', '#chosen', function() {
console.log('onchange: ' + this.value); …Run Code Online (Sandbox Code Playgroud) 我试图从雅虎api获得股票报价.我对查询的输入只是一个股票代码(来自文本字段).在按钮上单击后面的JavaScript方法"getprice()"被调用.我有一个看起来像这样的java脚本代码
function getprice()
{
var symbol = $('#stockquote').val();
var url = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22"+symbol+"%22)%0A%09%09&env=http%3A%2F%2Fdatatables.org%2Falltables.env&format=json";
$.getJSON(url, function (json)
{
var lastquote = json.query.results.quote.LastTradePriceOnly;
$('#stock').text(lastquote);
});
}
$('#stock').text(lastquote);
Run Code Online (Sandbox Code Playgroud)
这里"stock"是我希望显示给定股票代码的LastTradePriceOnly的文本字段.
我没有看到任何输出出现.调试也不会显示任何错误.我可以就此问题得到任何建议吗?
明显的问题 - 为什么?
我需要从外部页表单元格获取,然后将其注入当前页面.使用复杂选择器.
这是.load():
$('#check').load('https://bla-bla-bla .small:contains(Something)+.small:lt(1)');
Run Code Online (Sandbox Code Playgroud)
这是.get():
function showGetResult()
{
var result = null;
var scriptUrl = "https://bla-bla-bla";
$.get(scriptUrl, function(data) {
result = $(".small:contains(Something)", data).next().html() || "Error";
$('#check').append(result);
});
}
Run Code Online (Sandbox Code Playgroud)
load()平均1-2秒获得数据更快.但我喜欢get()- 因为我可以有字符串结果,而不是对象.
有人可以解释为什么load()工作更快?
Twitter开始使用WOFF webfont(截图).此字体是base64编码和其中在CSS文件内联<link>内部的编<head>.
现在,如果我理解正确,<link>ed CSS样式表是渲染阻止的,即浏览器在获取/解析其外部CSS文件之前不会呈现页面.
在这种情况下,访问Twitter时,浏览器应加载包含webfont的CSS文件,然后使用该webfont呈现页面.但是,我在Chrome/Windows中执行了一项测试(在空缓存/浏览器历史记录中),并且延迟显示了webfont :页面上的文本首先使用sans-serif操作系统的默认字体进行渲染,然后,几秒钟后,webfont"开始"并替换系统字体.
请看这里: https ://www.youtube.com/watch?v = yt9UXHmNofA(切换发生在6秒标记处)
为什么会这样?为什么Chrome在第一次渲染时不显示webfont?可能是base64解码是异步发生的吗?
我试图通过以下方式获取JSON文件:
$.ajax('/file.json', {
contentType: 'application/json',
dataType: 'jsonp',
success: function (data) {
console.log(data);
},
error: function (jqXHR, text, errorThrown) {
console.log(jqXHR + " " + text + " " + errorThrown);
}
});
Run Code Online (Sandbox Code Playgroud)
但是,我总是得到这个错误:
parsererror SyntaxError: Unexpected token :
Run Code Online (Sandbox Code Playgroud)
我的JSON文件非常简单:
{
stuff: "some stuff"
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一切,我听说过一些跨域的事情,但JSON文件在html的同一目录中.我不知道如何解决它.
我正在尝试遍历许多项目,并创建一个json对象.每个循环应该是对象上的一个新项目,但我遇到了一些问题.似乎只添加了一组项目,而不是多项.
这是我的代码:
jsonObj = {}
rows.each(function (index) {
jsonObj["id"] = $this.find('.elementOne').val();
jsonObj["name"] = $this.find('.elementTwo').text();
});
Run Code Online (Sandbox Code Playgroud)
这是我的json的样子:
{
id: "3"
name: "Stuff"
},
Run Code Online (Sandbox Code Playgroud)
这是我想要做的:
{
id: "1"
name: "Stuff"
},
{
id: "2"
name: "Stuff"
},
{
id: "3"
name: "Stuff"
}
Run Code Online (Sandbox Code Playgroud) 我有一个jquery脚本,当按下键盘上的任何键时显示div.我想在脚本中添加一个条件,如果页面上没有其他输入区域(textarea或texfields),则只运行脚本.这样你就可以实际输入页面的其余部分而不显示div.
$(document).on('keydown', function (e) {
if (!$('#test').is(':visible')) {
//######## IF (every input is not active....) {
if (65 <= e.keyCode && e.keyCode <= 90) {
$(elem).fadeIn();
$('#textarea').val('');
$('#textarea').focus();
$('#textarea').val(temp);
}
}
});
Run Code Online (Sandbox Code Playgroud)
谢谢.如果有必要,我可以在页面上为每个其他textarea提供相同的ID.
一旦我使用jQuery更改了元素的类,click函数就不能用于新类.
这是我的代码
jQuery('.close').on('click', function() {
jQuery('div').slideUp();
jQuery(this).addClass('open');
jQuery(this).removeClass('close');
});
jQuery('.open').on('click', function() {
jQuery('div').slideDown();
jQuery(this).addClass('close');
jQuery(this).removeClass('open');
});?
Run Code Online (Sandbox Code Playgroud)
你可以在这里试试 - http://jsfiddle.net/NkG9k/1/
尝试再次单击切换按钮.(它不会滑入div)