javascript - 从 AJAX 调用 PHP 获取 'echoed' 的 div 的 html

标签 javascript php jquery html ajax

我正在尝试从服务器加载下拉菜单,然后使用 jQuery 与该下拉菜单进行交互。一切都加载正常,但我无法与菜单项交互,因为它们不是加载的原始 HTML 的一部分,它们是在 AJAX 收到响应后输入的。

这里是ajax代码:

$(document).ready(function(){
    //load dropdown menu using ajax

    $.ajax({ url: "default/CallSupplierMongo",
        context: document.body,
        success: function (res) {
            document.getElementById("dropdownItems").innerHTML = res;
        }
    });

});

jQuery:

$(document).load(function() {
  $('.dropdownItems > div').click(function () {
        supplierCode = $(this).html();

        $('.dropdownItems > div').css({
            'background-color': 'white',
            'color': '#888888'
        });

        $(this).css({
            'background-color': '#888888',
            'color': 'white'
        });

        $('.dropdownItems').slideUp('fast');

        $('.dropdownButton').html(supplierCode);
        $('.dropdownButton').css({
            'border-bottom-right-radius': '5px',
            'border-bottom-left-radius': '5px'
        })
    });

});

还有 PHP:

function actionCallSupplierMongo() {
        self::getSuppliers();
}

private static function echoSupplierCodes($supplierCodes) {

    for ($i=0;$i<count($supplierCodes);++$i) {
        echo '<div>'.$supplierCodes[$i].'</div>';
    }

}

为了进一步解释这个问题:我想单击下拉项并获取其中的 HTML。当我点击时,没有任何内容被注册。我相信这是因为 jQuery 检查是否有那些 <div> s 在加载之前就存在,因此不应用 .click对他们起作用。

编辑我尝试将 AJAX 调用放入 $(document).load()但还是没有效果。

最佳答案

问题: 当您最初加载页面时,JS 代码会将事件(例如 click())附加到当前位于 DOM 上的元素,但是当您通过 AJAX 将新元素加载到 DOM 时,这些事件新元素没有绑定(bind)任何事件。因此 JS 中的事件不起作用。

解决方案: 您需要委托(delegate)事件处理程序。

更改此:

$('.dropdownItems > div').click(function () {

对此:

$(document).on('click', '.dropdownItems > div', function () {

来源:http://api.jquery.com/delegate/

关于javascript - 从 AJAX 调用 PHP 获取 'echoed' 的 div 的 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32892189/

相关文章:

javascript - 如何修改谷歌折线图的 JSON 字符串

javascript - D3.js 中的数组查找

javascript - 使用js将登录数据发布到站点

javascript - 光标指针显示的描述文本

javascript - 在 HTML 中重复 A4 尺寸样式

javascript - AngularJS $http 返回值

php - 我误解了 heredoc 应该做什么吗?

php - 拉维尔 4 : Class 'MongoClient' Not Found

PHP Laravel 检查数组是否为空

javascript - Jquery 在字符串中搜索单词