Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以“为目标”;这";关于动态加载<;ul>;_Javascript_Jquery - Fatal编程技术网

Javascript 以“为目标”;这";关于动态加载<;ul>;

Javascript 以“为目标”;这";关于动态加载<;ul>;,javascript,jquery,Javascript,Jquery,我有一个div,其中动态加载了一个无序列表。首先,我要说的是,当ul被硬编码时,它可以完美地工作,当加载一个新的ul时,问题就会出现。以下是我的javascript: $('#products ul li').hover(function(){ $(this).find(".productDesc").fadeToggle("slow"); }); 动态加载到中的代码html的结构如下: <ul id='category1'> <li> <p

我有一个div,其中动态加载了一个无序列表。首先,我要说的是,当ul被硬编码时,它可以完美地工作,当加载一个新的ul时,问题就会出现。以下是我的javascript:

$('#products ul li').hover(function(){
   $(this).find(".productDesc").fadeToggle("slow");
});
动态加载到
中的代码html的结构如下:

<ul id='category1'> 
  <li>
     <p class='productDesc'>description 1 here</p>
  </li>

  <li>
     <p class='productDesc'>description 2 here</p>
  </li>
</ul>
  • 这里是说明1

  • 此处为说明2

问题在于“
这个
”。当动态加载新的UL时,“
”似乎不再引用我悬停的元素。相反,它似乎什么都没有提到。如何使“
”正常工作?

您需要使用,因为
li
元素是动态添加的

因为您正在使用,所以没有悬停事件-这是一个实用的方法来注册和事件


在ajax代码之后插入第一个代码,然后附加侦听器…将悬停委托给#Product为悬停添加实时事件。如果为动态加载的元素触发事件,则这将引用正确的li元素。它不能指“什么都没有”。那么,处理程序是否真的被触发了呢?您需要查看,mouseenter和mouseleave eventsOP也可以在创建元素时直接绑定到元素,这有时比多次触发的事件(如
mouseenter/leave
)的委托更可取。是的,就是这样!我不太理解它背后的理论,但它确实解决了这个问题。jp310答案中的.delegate方法如何?它们有什么不同?@user2755541没有太大区别
.on()
是一个新方法(>=1.7),其中as delegate是从1.4.2。。。但是新代码推荐的方法是on
$('#products').on('mouseenter mouseleave', 'ul li', function () {
    $(this).find(".productDesc").fadeToggle("slow");
});
$('#products').delegate('ul li','hover', function( event ) {
    if( event.type === 'mouseenter' )  
        //your code here 
    else
        //your code here  
});