【问题标题】:jQuery trigger("click") not working [duplicate]jQuery触发器(“点击”)不起作用[重复]
【发布时间】:2017-03-31 05:43:59
【问题描述】:

有人可以解释粘贴的代码有什么问题吗?它在悬停时显示警报,但没有像我预期的那样执行点击事件,并且点击不适用于<a> 标签或<select> 标签。我的目的是通过触发 click 事件

来扩展select 元素on hover
<!DOCTYPE html>
<html>

<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
</head>

<body>
    <a id="linkElement" href="www.google.co.uk">click</a>

    <select name="cars" id="selectElemet">
      <option value="volvo">Volvo</option>
      <option value="saab">Saab</option>
      <option value="fiat">Fiat</option>
      <option value="audi">Audi</option>
    </select>


    <script>
        $(document).ready(function () {
            $("#selectElement").mouseover(function () {
                $("#selectElement").trigger("click");
            });

            $("#linkElement").mouseover(function () {
                alert('here');
                $("#linkElement").trigger("click");
            });
        });
    </script>
</body>

</html>

【问题讨论】:

  • 你的点击事件在哪里?
  • 而不是 $("#linkElement").trigger("click");使用 $("#linkElement").click();
  • 都试过 $("#linkElement").click();和 $("#selectElement").get(0).click();还是不行
  • 恐怕答案是,不可能以编程方式扩展选择元素。见stackoverflow.com/questions/430237/…stackoverflow.com/questions/19652085/…
  • 你想在悬停期间显示选择选项列表吗?我的理解对吗?

标签: javascript jquery html css


【解决方案1】:

.trigger("click") 不会真正点击元素,它只会触发元素附带的点击处理程序。由于您没有附加任何内容,因此不会触发。

可以使用原生.click()

$("#selectElement").get(0).click(); //get(0) returns reference to DOM element

【讨论】:

  • 我认为调用原生 click 不会解决 OPs 问题
  • @ArunPJohny,同意,请提供trigger() 不起作用的原因
【解决方案2】:

您的 ID 属性有拼写错误。将“selectElemet”替换为“selectElement”。希望对您有所帮助。

【讨论】:

  • 谢谢你我修好了但还是不行
  • 你可以试试这个,$("#linkElement").mouseover(function () { alert('here'); $(this).trigger("click"); });
  • 这里的“警报”正在干扰您的触发功能。请删除它并尝试,它会工作。
  • 为了测试,您可以为元素编写一个点击处理程序。 $("#linkElement").on('click',function(){ alert('after click'); });
【解决方案3】:

trigger('click') 只发生在您使用元素设置了 'click' 事件而不是物理 'click' 的情况下。例如,如果在没有 'click 的情况下附加,trigger('click') 甚至不会触发 '' 标签'

【讨论】:

    【解决方案4】:

    试试这个,

    $('#selectElement').on('change', function() {
    });
    

    【讨论】:

      【解决方案5】:

      将点击事件处理程序添加到元素。然后只有它会起作用。

      检查下面的sn-p。

      尝试将鼠标放在链接上,它会触发点击事件处理程序。

      $(document).ready(function() {
        $("#linkElement").mouseover(function() {
          $("#linkElement").trigger("click");
        });
        $("#linkElement").click(function(){
          window.location.href=$("#linkElement").attr("href");
        });
      });
      <!DOCTYPE html>
      <html>
      
      <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
      </head>
      
      <body>
        <a id="linkElement" href="www.google.co.uk">click</a>
      
        <select name="cars" id="selectElemet">
        <option value="volvo">Volvo</option>
        <option value="saab">Saab</option>
        <option value="fiat">Fiat</option>
        <option value="audi">Audi</option>
      </select>
      </body>
      
      </html>

      【讨论】:

      猜你喜欢
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-04
      • 1970-01-01
      相关资源
      最近更新 更多