jquery mobile将href从列表视图中删除

时间:2012-05-17 21:04:52

标签: jquery jquery-mobile phonegap-plugins

我正在开发一个多页面的JQM应用程序。在我的一个页面中,我引入了两个RSS源并使用jFeed插件显示它们。

我想要做的是将click事件捕获到listview中,抓住href并将其传递给Phonegap / Cordova ChildBrowser插件,以便它显示在子浏览器中。

我正在努力让href退出点击的活动。我不知道这是一个上下文或优先级问题,还是我想念的非常简单的事情。

在我附带的app.js文件中:

$("#chooseEvent").live('pageinit', function(event) {
  $.getFeed({
  url: "https://www1.ucsc.edu/news_events/calendar/rss/Today.ashx",
  complete: function(feed) {
  //called when complete
  //alert('complete');
  },
  success: function(feed) {
  //called when successful
  //alert('success' + feed.title);
  $("#content ul").append('<li data-role="divider" data-theme="b">' + feed.title + '</li>');
    for (var i = 0; i < feed.items.length && i < 10; i++) {
    var item = feed.items[i];
    $("#content ul").append('<li><a href="' + item.link + +"rel=external" + '">' + item.title + '</a></li>');
  }
  // run refresh on the listview to get the theme added correctly
  $('#content ul').listview('refresh');
  },
  error: function(feed) {
  //called when there is an error
  //alert('error');
  }
  // get the item clicked and prepare it for Child Browser
  $("#content ul").on('click', function(e) {
  //var url = this.href; // outputs #
  // var url = e.target; // outputs #
  var url = $(this).attr("href"); // result is undefined
  //var url = this.parent; // result in undefined
  alert(url);
  e.preventDefault();
 });
});

html页面

<div data-role="page" data-title="Campus Events" id="chooseEvent" addBackBtn="true">
<div data-role="header" data-add-back-btn="true">
<a href="index.html" rel="external" data-icon="arrow-l"  data-direction="reverse" class="ui-btn-left" data-theme="b">Back</a>
<h3>Today's Events</h3>
<a href="index.html" data-rel="back" data-icon="home" data-iconpos="notext"  data-direction="reverse" class="ui-btn-right" data-theme="b">Home</a>
</div>

<div data-role="content" id="content">
<ul data-role="listview" id="eventList" data-theme="b">

</ul>
</div> <!-- /content -->    
</div> <!-- /page -->

1 个答案:

答案 0 :(得分:0)

为了获得href事件中的click,您不应该绑定到新插入的<li>标记,即:

 $("#content li").on('click', function(e) {
     ...
     ...  
 });

或者更像是:

$('#content ul').delegate('li', 'click', function () {
    ...
    ...
});

不太确定哪个更好(或差异,真的)。