【问题标题】:Trigger click on a tag when pressing fake read more button按下假阅读更多按钮时触发点击标签
【发布时间】:2017-07-06 17:16:37
【问题描述】:

结构如下:

div
  h1
    a
  p
  .more-info

当我点击 .more-info div 时,我需要模拟点击“a”。

 $(".more-info").click(function() {
   $(this).parent().find('h1').find('a').get(0).trigger('click');
 })

这会出现以下错误:

$(...).parent(...).find(...).find(...).get(...).trigger is not a function

输出

 console.log($(this).parent().find('h1').find('a').get(0))

是我需要点击的正确元素。

我已经尝试不使用 .get(0) 并在我记录时获得关注

 [a, prevObject: jQuery.fn.init(1), context: p.more-info, selector: "h1 a"]

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    .get(0)返回jQuery对象内的DOM元素,但.trigger()是jQuery函数,所以需要对jQuery对象进行操作。

    但是,如果您在单击链接时尝试模拟浏览器的内置操作,.trigger() 将不会这样做。您需要调用 DOM 元素的 .click() 方法。

     $(".more-info").click(function() {
       $(this).parent().find('h1').find('a').get(0).click();
     });
    

    How to trigger a click on a link using jQuery

    【讨论】:

    • .get(0) 是一次绝望的尝试,因为没有它也无法工作。什么都没有发生,当我记录它时,我得到了正确的元素。由于某种原因,点击不起作用。即使我直接从元素和 .trigger('click') 或 .click() 复制选择器,它什么也不做。
    • 请注意,.click() 不会触发浏览器的内置点击处理,它只会运行 jQuery 处理程序。所以它不会跟随<a>中的链接。
    【解决方案2】:

    您可以使用元素的 .click() 方法,但我建议在 more-info 元素本身上放置一个链接。

    无论如何,这应该可以:

    $(this).parent().find('h1 > a').get(0).click();

    在这里查看小提琴: https://jsfiddle.net/Lpyctuga/4/

    【讨论】:

    • .get(0) 是一次绝望的尝试,因为没有它也无法工作。什么都没有发生,当我记录它时,我得到了正确的元素。由于某种原因,点击不起作用。即使我直接从元素和 .trigger('click') 或 .click() 复制选择器,它什么也不做。
    • 当我点击 $(this).parent().find('h1 > a').click();我得到以下 [a, prevObject: jQuery.fn.init(1), context: p.more-info, selector: "h1 > a"]
    • 这意味着他找不到a元素。您确定 HTML 结构与提供的一样,还是没有使用 $('.more-info') 选择器找到其他元素?
    • 这是一个原生 JavaScript 的示例:jsfiddle.net/Lpyctuga
    • 这里使用 jQuery:jsfiddle.net/Lpyctuga/1 事实证明你最好使用 .get(0) 因为触发对元素集合的点击可能会出现问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多