小编Fab*_*tté的帖子

调用event.preventDefault()后,为什么用JavaScript切换复选框/单选按钮失败?

考虑以下示例代码:

<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 /事件模型知识.我不想要解决方法,而是想知道为什么这个例子失败了.

javascript checkbox jquery dom javascript-events

13
推荐指数
1
解决办法
1152
查看次数

当通过JS更改值时,jQuery选择不触发onchange事件

的jsfiddle

我在小提琴中设置了select3 option秒(1个空白).当我从手动切换foobar手动时,change监听器会正常触发.

现在,如果我select使用在此处的某些答案中发布代码重置直通JS ,则change事件不会针对新选择的空白选项触发,此外,如果我选择在单击reset按钮之前选择的选项,则onchange事件将不会触发.

我敢肯定select的价值被上面的功能,都可以在此看到改变小提琴,但selectonchange事件根本不火.

我也试过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)

javascript jquery jquery-chosen

9
推荐指数
2
解决办法
3万
查看次数

使用javascript以json格式获取yahoo finance的股票报价

我试图从雅虎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的文本字段.

我没有看到任何输出出现.调试也不会显示任何错误.我可以就此问题得到任何建议吗?

javascript rest

9
推荐指数
1
解决办法
2万
查看次数

如何使用Select2和远程数据禁用某些选项

Select2在<select>标记上初始化时支持禁用选项,如本期中所述

但是,我找不到如何用远程数据实现相同的结果.我需要使用自定义格式功能吗?如何阻止用户选择呢?或者这是内置的?

谢谢!

html javascript jquery jquery-select2

9
推荐指数
1
解决办法
2万
查看次数

jQuery:与load()相比,get()更慢

明显的问题 - 为什么?

我需要从外部页表单元格获取,然后将其注入当前页面.使用复杂选择器.

这是.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()工作更快?

javascript jquery

7
推荐指数
1
解决办法
911
查看次数

为什么CSS内联(base64编码)webfonts会延迟呈现?

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解码是异步发生的吗?

html css browser base64 webfonts

7
推荐指数
1
解决办法
1566
查看次数

jquery ajax意外令牌:

我试图通过以下方式获取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的同一目录中.我不知道如何解决它.

ajax jquery json

7
推荐指数
1
解决办法
2万
查看次数

如何用循环构建一个json对象?

我正在尝试遍历许多项目,并创建一个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)

javascript jquery json

6
推荐指数
2
解决办法
3万
查看次数

检查是否有任何输入元素是焦点

我有一个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 focus input

6
推荐指数
2
解决办法
1万
查看次数

更新类后jQuery单击功能不起作用

一旦我使用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)

jquery

5
推荐指数
1
解决办法
2969
查看次数