javascript - Div 不响应 jQuery 函数

标签 javascript jquery callback

  1. 我有一堆产品会在用户第一次加载页面时加载(追加)到页面。我使用 $.post() 调用数据库,然后将数据作为多个 div 附加到容器中。

     $(function() {
    
      var profile_looks = $('#profile_looks');
    
      $.post("apples.php", function(json) {
    
         var looks = $.parseJSON(json);
    
         profile_looks.prepend(
    
         (some code here)
    
         )
    
      });  // close $.post()
    
  2. 加载这些产品后,我希望产品在悬停时更改背景颜色。

      var product_tags = $('.product_tags');
    
      product_tags.mouseenter(function() {
    
         $(this).css('background-color', 'white');
    
      });
    
      }); // close $(function()
    

但是第 2 步不起作用,这意味着当我将鼠标悬停在 product_tags 上时,它们不会改变。为什么 product_tags div 不响应函数调用?

完整代码如下

$(function() {

       var profile_looks = $('#profile_looks');

        $.post("apples.php", function(json) {

               var looks = $.parseJSON(json);

                var page_post = "";

        $.post('oranges.php', function(products_data) {

        var products_display = $.parseJSON(products_data);


        for(i = 0; i < looks.length; i++) {

            var fruits = products_display[i];  

                        for(var key in fruits) {

                         var test = "<div class='product_tags' style='color:" + "black" + "' >" + "<span class='type' style='font-weight:600'>" + key + "</span>" + " " + "<span class='title'>" + fruits[key] + "</span>" + "</div>";

                          var mega = mega + test;


}; // the 2nd for-loop finishes, and re-runs the first for-loop

}; // b=0 timer loop finishes


 profile_looks.prepend(

            "<div class='look'>" + "<div class='look_picture_container'>" +

            "<img src='" + "user_pictures/" + username_cookie + "/" + looks[i][0] + "'>" +

            "<div class='heart'>" +

            "<img src='" + "../function icons/hearticon black.png" + "'>" +

            "<div class='heartcount'>" +


            "</div>" +
            "</div>" +


            "<div class='product_tags_container' style='background-color:" + looks[i][3] +  "' >" + mega + "</div>" +

            "</div>" + // class="look_picture_container"

            "<div class='post_description'>" +
            looks[i][1] +
            "</div>" + // class= "post_description"

            "</div>"); // class="look"

            var mega = "";

        }

        }); // for the $.post(displayproducts.php)
        }) // for the $.post(displaylooks.php)



 var product_tags = $('.product_tags');

    product_tags.mouseenter(function() {

            $(this).css('background-color', 'white');
    });

    product_tags.mouseleave(function() {

    $(this).css('background-color', 'transparent')
    });


}); // end of $(function()

最佳答案

它不起作用,因为当您尝试将事件绑定(bind)到它们时,这些元素尚不存在。

您可以使用委托(delegate)事件,将其绑定(bind)到元素将结束的现有元素:

profile_looks.on('mouseenter', '.product_tags', function() {
  $(this).css('background-color', 'white');
}).on('mouseleave', '.product_tags', function() {
  $(this).css('background-color', 'transparent')
});

关于javascript - Div 不响应 jQuery 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32038102/

相关文章:

javascript - 在 javascript 中为所有事件类型定义回调函数

javascript - 传单仅加载一个图 block

javascript - 通过回调将数据传回匿名函数?

javascript - 将对象中的文本存储在数组中

javascript - jQuery 检查文件扩展名在 IE 中不起作用

javascript - Coffeescript 对象、jquery 回调和变量作用域的冲突和混淆

javascript - 为什么我的 IFRAME 不适合其容器 DIV 一对一?

javascript - 将 $http 服务的响应保存到 angularjs 中的数组中

javascript - jquery展开表不是以隐藏方式开始

javascript - Typescript 接口(interface)实例(对象)的可变性