7

我遇到的另一个问题是 w/jqTouch... 我试图检测点击了哪个元素来触发动画,以便我可以将参数从点击的项目传递到后续页面。

我的 HTML 是:

<div id="places">
 <div class="toolbar">
        <h1>Places</h1>
  <a class="back" href="#">Back</a>
    </div>
 <ul>
  <li id="1"><a href="#singleplace">Place 1</a></li>
  <li id="2"><a href="#singleplace">Place 2</a></li>
  <li id="3"><a href="#singleplace">Place 3</a></li>
 </ul>
</div>

<div id="singleplace">
 <div class="toolbar">
        <h1></h1>
  <a class="back" href="#">Back</a>
    </div>
</div>

当我单击#places 中的任何列表项时,我可以很好地滑到#singleplace,但我试图检测单击了哪个元素,以便我可以将参数传递到#singleplace div。我的 javascript 是:

var placeID;
$('#places a').live('mouseup',function(){
 $('#singleplace h1').html($(this).text())
 placeID = $(this).parent().attr('id');
})

我尝试了 $(el).live('event', fn()) 方法的几种替代方法,包括:

$('#places a').live('click',fn()...
$('#places a').live('mouseup',fn()...
$('#places a').live('tap',fn()...
$('#places a').tap(fn()...

这些似乎都不起作用。有没有更好的方法可以处理这个问题?我在 jqTouch 的问题页面上注意到,有这样的:http ://code.google.com/p/jqtouch/issues/detail?id=91 这可能是问题的一部分......

4

2 回答 2

2

我找到了一个解决方案:

  • 使用tap(function()...)代替live('click',function()...)
  • 利用jQT.goTo('#singleplace', 'slide');
  • 利用return false;

    var placeID;  
    $('#places a').tap(function(){  
     $('#singleplace h1').html($(this).text());  
     placeID = $(this).parent().attr('id');  
     jQT.goTo('#singleplace', 'slide');     
     return false; 
    });

这对我有用,甚至在 Firefox 和 Safari 中,不仅在移动 safari 中。

一些附加信息:
JQTouch 中的实时事件似乎存在问题:http ://code.google.com/p/jqtouch/issues/detail?id=165

让我知道这是否也适合您。

于 2010-05-20T17:07:23.940 回答
2

如果您只是想传递单击了哪个列表项的信息,则可以将一个附加onClick="function(event)"到项目...

<li><a id="1" title="first" onClick="send(event)" href="#singleplace">Place 1</a></li>

然后在js中...

function send(event) {
    x=event.target;
}

在哪里x.id=='1' x.title==first & x.text=='Place 1'

希望那些对你有帮助。

于 2010-04-19T20:01:35.280 回答