javascript - 为什么实际的鼠标点击不起作用,但在 JS 控制台中执行 .click() 却可以?

标签 javascript jquery ruby-on-rails ruby-on-rails-4 asset-pipeline

当我尝试执行一些 JS 时,通过单击按钮,它不会执行我想要的操作。但是,当我启动 JS 控制台并手动执行它时,它就可以工作了。

这是我的整个 JS 文件(包括以防发生冲突):

var ready;
ready = function() {

    // This is the Sidebar toggle functionality that I am most interested in
    var toggleSidebar = $("#togglesidebar");
    var primary = $("#primary");
    var secondary = $("#secondary");

    toggleSidebar.on("click", function(){

        if(primary.hasClass("col-xs-9")){
            primary.removeClass("col-xs-9");
            primary.addClass("col-xs-12");
            secondary.css('display', 'none');
        }
        else {
            primary.removeClass("col-xs-12");
            primary.addClass("col-xs-9");
            secondary.css('display', 'inline-block');
        }
    });
};

$(document).ready(ready);
$(document).on('page:load', ready);

counter = function() {
    var body_value = $('#post_body').val();
    var title_value = $('#post_title').val();       

    if (body_value.length == 0) {
        $('#wordCountBody').html(0);
        $('#totalCharsBody').html(0);
        return;
    }

    if (title_value.length == 0) {
        $('#wordCountTitle').html(0);
        return;
    }

    var regex = /\s+/gi;
    var wordCountBody = body_value.trim().replace(regex, ' ').split(' ').length;
    var totalCharsBody = body_value.length;
    var wordCountTitle = title_value.trim().replace(regex, ' ').split(' ').length;

    $('#wordCountBody').html(wordCountBody);
    $('#totalCharsBody').html(totalCharsBody);
    $('#wordCountTitle').html(wordCountTitle);
};

$(document).ready(function () {
    $('#count').click(counter);
    $('#post_body, #post_title').on('change keydown keypress keyup blur focus', counter);
        $('body').tooltip({ selector: "[data-toggle~='tooltip']"});
});

这是正在触发的 HTML:

<div class="hidden-xs col-sm-3 masthead-group-3 pull-left">
    <div id="togglesidebar" class="pull-right">
     <button class="btn btn-default btn-lg btn-primary"><i class="fa fa-child"></i> Submit News</button>
    </div>
</div>

但是,当我转到控制台并执行此操作时,它工作得很好:

$("#togglesidebar");
[<div id=​"togglesidebar" class=​"pull-right">​…​</div>​]
$("#togglesidebar").click();
[<div id=​"togglesidebar" class=​"pull-right">​…​</div>​]

您可以see it live here .

最佳答案

您有两个具有相同 id 的按钮。

jQuery # 选择器仅找到该 id 的第一个匹配,因此第一个按钮被隐藏。

删除它或更改它的名称,它应该可以工作;-)

编辑:

您还可以将它们更改为 .className 而不是 id 以及对类的所有相应引用,它应该可以工作。

关于javascript - 为什么实际的鼠标点击不起作用,但在 JS 控制台中执行 .click() 却可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26114402/

相关文章:

Jquery UI 对话框格式化

ruby-on-rails - 使用 Ruby/Rails 将嵌套散列展平为单个散列

javascript - 填写输入文字

jquery - 我可以以某种方式组合这两个 jQuery 事件吗?

javascript - 有没有办法用 JavaScript 检测处于这种状态的 Safari?

javascript - 使用 jQuery 获取文本字符串的前两个句子(直到第二个点)?

ruby-on-rails - 使用 Remote_cache 进行 Capistrano 部署 - 权限被拒绝

ruby-on-rails - 不以 '/' 结尾的 Apache/Rails/Passenger 目录 URL 失败到 404

javascript - 使用JQuery刷新页面但没有得到想要的结果

javascript - 检查json请求的响应内容?