2012-09-17 70 views
0

也许这是一个太基本的问题,但jQuery 1.7+和1.8+中的.on()事件绑定有什么区别?我的问题是以下几点:.on()jQuery 1.7和1.8的区别

我动态创建一个列表与ASP MVC 3和jQuery Mobile 1.2 RC1和我绑定一个点击事件的李元素。如果我使用jQuery 1.7+所有工作正常,但是当我使用1.8+时,点击事件仅在第一个li元素上触发。我检查了jQuery的文档,但实际上应该没有区别或?

<ul data-role="listview" id="immo_list" data-inset="true" 
data-theme="c" data-dividertheme="b" data-filter="true"> 
    <% 
     foreach (var immobilie in Model.immoObjekte) 
         { 
    %> 
     <li id="immos" val="<%: immobilie.id %>"> <a href=""> 
      <%: immobilie.strasse %> <%:immobilie.hausnummer%></a> 
      <span class="ui-li-count"><%:immobilie.id%></span> 
     </li> 
    <% 
     } 
    %> 
    </ul> 


$('#immo_list').on('click', '#immos', function() { 
    $.mobile.loading('show'); 

    var immoid = $(this).attr('val'); 
    var days = $("#interval").val(); 

    sessionStorage.setItem("clicked", "false"); 
    sessionStorage.setItem("mode", ""); 

    sessionStorage.setItem("days", days); 
    sessionStorage.setItem("immoid", immoid); 

    getAndShowPflichten(immoid, days); 

}); 

感谢您的帮助!

+0

首先验证html? - http://validator.w3.org/ – dougajmcdonald

回答

3

你不能有相同的ID不止一个元素,它必须是唯一的。请将#immos改为一个类。

jquery 1.8包括一个新版本的Sizzle,它们的选择器引擎。正如你所说的它在1.7版本中工作,我认为新版本在这个意义上更严格。出于性能方面的原因,Sizzle会在找到#immos后立即停止拖网该元素的文档,因为它预计它是唯一的。

+0

谢谢大家的帮助,我会尝试解决方案,然后... – smatyas

3

您正在定义几个具有相同ID'immos'的元素。 HTML文档中的每个元素都必须有明确的ID。改为使用类,并使用类选择器。例如: -

<li class="immos" ... 

和jQuery选择:

$('#immo_list').on('click', '.immos', ... 
相关问题