【问题标题】:Trigger click event on DOM element触发DOM元素的点击事件
【发布时间】:2014-05-29 17:39:19
【问题描述】:

我尝试在选定的 DOM 元素上触发点击事件,但我的代码不起作用。

你可以在JSFiddle上看到我的尝试。

<ul class="list-group">
    <a href="#" class="list-group-item" data-key="32">LG GOLA 8M</a>
    <a href="#" class="list-group-item" data-key="33">LG 5-6M</a>
    <a href="#" class="list-group-item" data-key="34">LP 5-6M</a>
</ul>

$(document).ready(function() {
    // I get the string tr from URL parameters
    var tr = "fix_LG%20GOLA%208M";
    if (tr !== null) {
        var terminrahmen = $('.list-group-item').filter(function() {
            return $(this).text() === decodeURI(tr).substring(4);
        });

        // Trigger click event on .list-group-item
        terminrahmen.click();
    }

    // The function to be executed
    $('.list-group-item').click(function() {
        alert($(this).text());
    });
});

加载 DOM 后,我从 URL 参数中收集一些数据,并将这些数据与 DOM 元素进行比较。这部分工作正常。

之后我得到一个元素,我想触发一个点击事件。点击事件应该“执行”一个指定的功能。

有没有人给我一个好的解决方案?提前致谢。

【问题讨论】:

  • 有效吗?我不知道问题是什么。点击事件被触发并弹出一个警报就好了。
  • 您试图在分配处理程序之前触发.click()。这自然是行不通的。首先分配处理程序,以便在您触发它时它就在那里。 jsfiddle.net/azg2R/4
  • 非常感谢。你的提示对我来说很好。谢谢。

标签: javascript jquery html twitter-bootstrap dom


【解决方案1】:

http://jsfiddle.net/azg2R/2/

把点击事件放在ready事件的最上面。点击事件需要注册事件后触发。以前没有发生过

$(document).ready(function() {           
    // The function to be executed
    $('.list-group-item').click(function() {
        alert($(this).text());
    });

    // I get the string tr from URL parameters
    var tr = "fix_LG%20GOLA%208M";
    if (tr !== null) {
        var terminrahmen = $('.list-group-item').filter(function() {
            return $(this).text() === decodeURI(tr).substring(4);
        });

        // Trigger click event on .list-group-item
        terminrahmen.click();
    }
});

【讨论】:

    【解决方案2】:

    问题是您在将事件处理程序附加到它之前触发了单击事件。所以你只需要在触发点击之前移动点击处理程序,一切都会按你的预期工作:

    $(document).ready(function() {
        // The function to be executed
        $('.list-group-item').click(function() {
            alert($(this).text());
        });
        // I get the string tr from URL parameters
        var tr = "fix_LG%20GOLA%208M";
        if (tr !== null) {
            var terminrahmen = $('.list-group-item').filter(function() {
                return $(this).text() === decodeURI(tr).substring(4);
            });
    
            // Trigger click event on .list-group-item
            terminrahmen.click();
        }
    
    });
    

    JSFiddle

    【讨论】:

      猜你喜欢
      • 2018-08-02
      • 2012-12-07
      • 2023-04-06
      • 1970-01-01
      • 2023-01-05
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 2017-12-05
      相关资源
      最近更新 更多