【问题标题】:Jquery Focus selects the whole pagejQuery Focus 选择整个页面
【发布时间】:2016-02-25 00:27:38
【问题描述】:

我正在尝试在我的 Ruby on Rails 应用程序中实现复制到剪贴板功能。在我的部分,我有这个代码:

<div class="share"/>
    <button class='my_clip_button clipboard' data-clipboard-text='<%= request.base_url.chomp('/') + trailer_path(trailer) %>'title='Click me to copy to clipboard.'>
      <%= image_tag('copy.png', :class=>"img-responsive") %>
    </button>
      <div class="reminder">
        <p>Copy link</p>
      </div>
      <input type="text" name="Element To Be Copied" class = "clipboardtext"
      id="inputContainingTextToBeCopied" value='<%= request.base_url.chomp('/') + trailer_path(trailer) %>'
      style="display:none; position: relative; left: -10000px;"/>
    </div>

在我的 javascript 助手中,我有:

$('.clipboard').click(function(){
  $(this).closest(".share").find(".clipboardtext").focus();
  document.execCommand('SelectAll');
  document.execCommand("Copy", false, null);
  copyDiv.style.display = 'none';

});

上树,是不是应该先到父div,然后找到对应class的第一个元素?我对为什么选择整个网页感到困惑。使用 ID 更容易,因为我可以简单地使用 getElementById,但我不确定如何为类/多个元素执行此操作。提前谢谢你。

【问题讨论】:

    标签: javascript jquery css ruby-on-rails clipboard


    【解决方案1】:

    你试过了吗:

    $(this).siblings(".clipboardtext").focus(); 
    

    或:

    $(this).parent(".share").find(".clipboardtext").focus();
    

    【讨论】:

    • 两个都试了,还是选中了整个页面。
    【解决方案2】:

    看起来你的 div 标签格式不正确:

    <div class="share"/>
    

    应该是

    <div class="share">
    

    否则在测试时它可以工作。

    【讨论】:

    • 仍然复制整个页面 :(.
    • 您不能专注于隐藏的元素。如果您删除 style="display:none;"这将工作
    • 如果我使用 document.queryselector('.clipboardtext') 我得到了正确的东西,但当然只适用于第一个元素.. 奇怪
    猜你喜欢
    • 2010-10-22
    • 2013-01-24
    • 2016-02-16
    • 2019-07-07
    • 1970-01-01
    • 2011-03-10
    • 2018-03-02
    • 1970-01-01
    • 2013-10-24
    相关资源
    最近更新 更多