【问题标题】:jquery mobile click() on listviewlistview上的jquery mobile click()
【发布时间】:2012-06-04 16:04:45
【问题描述】:

jquery mobile 中的列表视图有问题。我想使用 JSON 从服务器加载一些数据并用这些项目填充你的列表视图。这很好用。但是当我试图对点击一个新加载的项目做出反应时,我确实得到了这个事件!我想我必须以某种方式刷新视图,有点不知道如何。

我在http://jsfiddle.net/VqULm/227/上画了一个小草图

当您点击点击我按钮时,不再跟踪项目上的点击事件。我如何获得关于新项目的“Wokrs”警报?

非常感谢您的阅读!

【问题讨论】:

    标签: jquery listview mobile click


    【解决方案1】:

    试试

        $('#listview').on('click', 'li', function() {
            alert("Works"); // id of clicked li by directly accessing DOMElement property
        });
    

    jQuery > 1.7

    DEMO

    $('#listview li').live('click', function() {
        alert("Works"); // id of clicked li by directly accessing DOMElement property
    });
    

    使用您的 jQuery 版本 1.6.4。

    DEMO

    为什么需要这个

    因为。您在页面重新加载后在listview 中添加li,因此对于那些lis 的任何事件都应该live(对于您使用的jQuery 版本)或delegate(jQuery > 1.7)。

    【讨论】:

    • 非常感谢!啊啊好明白。基于脚本的编程新手。这么想的!再次感谢你!解决了!
    【解决方案2】:

    如果您的 JQM 版本较旧(如我的 - jqm 1.2.0), 并且提到的两种方法都不适合您

    试试这个:

         <ul data-role="listview" id="myList">
           <li id="1" >text</li>
         </ul>
    
         //on the js code use delegate
         $('#myList').delegate('li', 'click', function () {
             alert($(this).attr('id'));
         });
    

    【讨论】:

      【解决方案3】:

      到远程数据源和liswiew

      用 div 包裹 ul 元素

      <div data-role="page" id="myPage">
        <form id="myform" class="ui-filterable">
          <input id="what" data-type="search" placeholder="i.e.Carpentry...">
          <div id="w_what">
            <ul id="ul_what" data-role="listview" data-inset="true" data-filter="true" data input="#what">
            </ul>
           </div>
         </form>
       </div>
      
      $( "#ul_what" ).on( "filterablebeforefilter", function ( e, data ) {
          var $ul = $( this ),
          $input = $( data.input ),
          value = $input.val(),
          html = "";
          $ul.html( "" );       // initially null 
          $('#w_what').show();  // For next search
          if ( value && value.length > 0 ) {
              $ul.html( "<li><div class='ui-loader'><span class='ui-icon ui-icon-loading'></span></div></li>" );
              $ul.listview( "refresh" );
              $.ajax({
                  url: "/php/getWhat.php", // Ajax url
                  dataType: "json",        // json 
                  data: {
                      q: $input.val()      // which value to be searched
                  }
              })
              .then( function ( response ) {
                  $.each( response, function ( id, val ) {
                      html += "<li>" + val.text + "</li>";  // json response has text element
                  });
                  $ul.html( html );
                  $ul.listview( "refresh" );
                  $ul.trigger( "updatelayout");
              });
          }
      });
      
      $('#ul_what').delegate('li', 'click', function () {
          var ul = $(this);          // when clicked
          $('#what').val(ul.text()); // set the value for input       
          $('#w_what').hide();       // hide the div 
      
       });
      

      希望对某人有所帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多