【问题标题】:jquery function first run after two click两次单击后第一次运行jquery函数
【发布时间】:2013-11-12 12:01:10
【问题描述】:

当我加载页面时 selText() 仅在两次单击后运行,然后它工作正常,但如果刷新页面我需要再次单击两次

<a href="javascript: selText();" class="select">click</a>
<input type="text"  value="value" />

<a href="javascript: selText();" class="select">click</a>
<input type='text'  value='value' />

<a href="javascript: selText();" class="select">click</a>
<input type="text"  value="value" />




function selText() {
        $(".select").click(function () { $(this).nextUntil("a").select(); });
    }

【问题讨论】:

    标签: jquery function select click selectall


    【解决方案1】:

    我不知道为什么,但在我项目的某些视图中,上面的代码不起作用,我必须执行以下操作

    $(document).ready(function () {
        $(document).on('click', '.tabl-red', function (e) {
            e.preventDefault();
            $(this).nextUntil("a").select();
        });
    });
    

    也许对某人有帮助

    【讨论】:

      【解决方案2】:

      这是因为当你添加

      function selText() {
          $(".select").click(function () { $(this).nextUntil("a").select(); });
      }
      

      然后单击锚链接,第一次发生的情况是该函数将单击事件绑定到“.select”元素。这就是为什么第一次点击没有做任何事情的原因。但是之后的点击会按预期工作。上述代码的不良影响是,您将单击事件绑定到实际上执行相同操作的多个函数(绑定的函数数等于单击锚标记的次数)

      答案是,你需要放置

      $(".select").click(function () { $(this).nextUntil("a").select(); });
      

      下

      $(document).ready(function(){
      ..// your code here
      });
      

      【讨论】:

      • 我的荣幸。如果您的问题得到回答,您可以投票或将其标记为已回答,:-)
      【解决方案3】:

      您正在注册单击处理程序,该处理程序在单击处理程序上调用select 方法,因此当第一次单击发生时,没有处理程序来选择元素,但它只是注册了一个将进行选择的处理程序。当第二次单击发生时,您将有 2 个用于单击事件的处理程序一个 selText 和第二个由第一个注册的处理程序。但是当您第三次单击时,select() 代码将被调用两次。

      因此,在您的情况下,解决方案是删除内联处理程序并在 dom 就绪回调上注册一个单击处理程序,如下所示。

      <a href="#" class="select">click</a>
      <input type="text"  value="value" />
      
      <a href="#" class="select">click</a>
      <input type='text'  value='value' />
      
      <a href="#" class="select">click</a>
      <input type="text"  value="value" />
      

      然后

      jQuery(function () {
          $(".select").click(function (e) {
              $(this).nextUntil("a").select();, e.preventDefault()
          });
      })
      

      【讨论】:

        【解决方案4】:

        把你的代码放进去

        $(document).ready(function() {
            $(".select").click(function (e) {
                e.preventDefault();
                $(this).nextUntil("a").select();
            });
        });
        

        【讨论】:

        • 算了,如果对你有帮助,请投票和/或将其标记为答案。
        猜你喜欢
        • 2014-07-14
        • 2013-06-07
        • 2017-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-03
        • 1970-01-01
        相关资源
        最近更新 更多