【问题标题】:jQuery: how to put a mouseover event on tag select generated by ajaxjQuery:如何在 ajax 生成的标签选择上放置鼠标悬停事件
【发布时间】:2016-03-08 14:46:48
【问题描述】:

在我的页面中,我有一个选择菜单:

<div class="div1" style="float: left">
        <strong>Cerca Prodotto</strong>
        <br/><br/>
        <form class="form">
                <div><input type="text" id="tags" value=""></div>
                <div>
                <img class="btnaggiungi" src="http://lainz.softwebsrl.it/img/carrello.jpg" alt="Aggiungi" id="add_newProduct"/>
                </div>
        </form>

</div>

由以下 jQuery 控制和生成:

$( "#tags" ).autocomplete({
        minLength: 2,
        source: function (request, response) {
            $.ajax({
                url: "http://lainz.softwebsrl.it/ajax/autocompletecibo",
                dataType: "json",
                crossDomain: true,
                type : 'post',
                data:
                {
                    valore: request.term,
                },
                success: function (data)
                {
                    response(data);
                    console.log(data);
                }
            });
        },
        focus: function() {
          // prevent value inserted on focus
          return false;
        },
        select: function( event, data ) {
          var selezione = data.item.label;
          $.ajax({
                type : 'POST',
                url: "http://lainz.softwebsrl.it/ajax/autocompletecibolista/valore/"+selezione,
                dataType: "html",
                success: function(msg){
                    $(".div2").html(msg);
                },
                error: function()
                {
                    alert("Chiamata fallita, si prega di riprovare...1");
                }
            });
        }
    });

现在我需要在每个条目上添加一个鼠标悬停事件。我的意思是,当用户将鼠标放在列表的一个选项上时,还有一些其他的 js 代码要执行,最后会显示一个地图。如何添加?

更新

这可能是一个解决方案:

<script>
 $(document).on("mouseenter", "li", function() {
  $(".div5").show();
 });

 $(document).on("mouseleave", "li", function() {
  $(".div5").hide();
 });
</script>

【问题讨论】:

    标签: javascript jquery ajax select mouseover


    【解决方案1】:

    您必须将事件绑定到静态元素,然后将其委托给动态生成的元素。我的意思是,如果&lt;div class="div1"&gt; 是您动态生成的 HTML 的容器,那么您必须执行以下操作:

    $('.div1').on('mouseover','.div2 .dynamicallyGeneratedList',function(){
        console.log('do something');
    })
    

    【讨论】:

    • 它对我不起作用......也许我不明白它是如何工作的
    【解决方案2】:

    你的问题并不完全。您的数据响应如何?也许这对你有帮助。

    $(data).each(function() {
      var $li = $("<li>"+data+"</li>");
      $li.bind("mouseover", showMap);
      $("ul").append($li);      
    });
    
    function showMap() {
      // show map
    }
    

    【讨论】:

    • 数据是从 php 中通过 fetchAll() 得到的数组
    • 所以你想将你的结果项附加到&lt;ul&gt;,就像&lt;li&gt;一样?
    • 是的,当我开始输入内容时,我得到一个&lt;ul&gt;&lt;li&gt;...&lt;li&gt;&lt;/ul&gt;。我试过了
    • $('li[id^="ui-id-"]').on("mouseover",function() { $("div[id=single_position]").show(); })
    • 这行得通吗?请参阅更新的答案。还是响应日期包括 html 标记?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    相关资源
    最近更新 更多