【问题标题】:jQuery - click() not working when attached to anchor created in PHPjQuery - 当附加到 PHP 中创建的锚点时,click() 不起作用
【发布时间】:2011-03-21 21:06:22
【问题描述】:

我有这个在页面上输出 HTML 锚元素的 PHP 代码:

            if(!$isOnOwnPage)
                    echo '<a id="message-button" class="button">Message</a>';
                if($isOnOwnPage)
                    echo '<a id="add-img-button" class="button">Add Image';
                else if(!$isFollowing)
                    echo '<a id="follow-button" class="button">Follow';
                else
                    echo '<a id="follow-button" class="button">Unfollow';
                echo "</a>";

当我加载网页时,我得到了这个,正如预期的那样:

...    
<a id="message-button" class="button">Message</a><a id="follow-button" class="button">Unfollow</a>          
...

但是当我尝试将 click() 函数附加到它时,点击不起作用。这是 jQuery 代码。 (这很奇怪,因为我在页面上的所有其他 JS 都可以完美运行。”

$('.button').click(function() { alert("HEY"); }); // It doesn't work grabbing by #follow-button or #message-button either.

我在这里做错了什么?我花了一个小时查看这些 sn-ps 代码无济于事。

【问题讨论】:

  • 这些链接何时/如何加载?试试 $('.button').live('click') ,这样行吗?
  • 你必须在某个地方有另一个 js 错误,这会杀死你。你检查过你的控制台吗?您的代码在这里工作正常。 jsfiddle.net/QWP68
  • 没有错误,我所有的其他 jQuery 作品。而button.click()代码sn -p就是document.ready的第一行
  • @Johnny 你检查过$('.button') 对象吗?它包含哪些 DOM 元素?
  • 您的 jQuery 代码是否包含在 $(document).ready(function() {...}); 之类的东西中?

标签: php jquery mysql html click


【解决方案1】:

试试这个:

$('.button').live('click',function() { alert("HEY"); });

把它放在你的$(document).ready函数中。

【讨论】:

  • 一个或另一个,不要同时为两个。
【解决方案2】:

你会想方设法地猜测你忘记等待document.ready,并且click 事件绑定时a.button 元素不存在。

【讨论】:

  • 没有。我确实有document.ready,我确实在点击之前等待。我所有的其他锚点击处理程序都可以正常工作,除了这个。
【解决方案3】:

是否以某种方式包含 ajax?因为那样你需要要么使用直播,要么重新应用该功能。

【讨论】:

    【解决方案4】:

    无论它是否是 PHP 生成的,它都应该可以工作。最终它仍然是 HTML 输出到客户端。

    我认为您应该确保 JS 代码到达您将点击分配给按钮的部分。也许没有准备好的文件或正确的文件。也许有一个没有通过的布尔 IF。

    总而言之,如果你可以在查看源代码页面中看到代码,那么这是 HTML/JS 的问题,而不是 PHP 的问题。

    【讨论】:

      【解决方案5】:

      这是一个老问题,但对于所有想要将侦听器添加到动态内容的人来说,您需要使用 document 作为对象,而不是使用 $('a').(click(function(){})$('a').on('click',function(){})您想附加监听器,因为您插入的标签在分配监听器时不在 DOM 中。

      所以你应该使用:

      $(document).on('click','a',function(){ ... });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-07
        • 1970-01-01
        • 2012-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-07
        相关资源
        最近更新 更多