在jQuery Mobile中启用列表项到可单击区域

时间:2011-11-08 07:01:25

标签: jquery css jquery-mobile

说明 以下代码片段在Android / iPhone中用于Roundabout carousal。每个LI的宽度和高度均为100px x 100px。并且链接是LI的顶部。

  <div data-role="content" data-theme="aa">
    <ul class="roundabout-holder"> 
         <li class="roundabout-moveable-item">
             <a href="<%= url_for :action => :graph %>"> <%= label_for:link %></a></li> 
         <li class="roundabout-moveable-item"> 
             <a href="<%= url_for :action => :graph %>"> <%= label_for:link %></a></li> 
         <li class="roundabout-moveable-item"> 
             <a href="<%= url_for :action => :graph %>"> <%= label_for:link %></a></li> 
         <li class="roundabout-moveable-item"> 
             <a href="<%= url_for :action => :graph %>"> <%= label_for:link %></a></li> 
         <li class="roundabout-moveable-item"> 
             <a href="<%= url_for :action => :graph %>"> <%= label_for:link %></a></li> 
    </ul> 
  </div>

CSS

.roundabout-holder {
    list-style: none;
    width: 75%;
    height: 10em;
    margin: 1em auto;
}

.roundabout-moveable-item {
    height: 100px;
    width: 100px;
    border: 1px dotted #999;
    background-color: #f3f3f3;
    font-size: 2em;
    cursor: pointer;
}

当前行为: 在项目中,Anchor仅表现为链接(跳转到给定引用)

预期行为 当用户点击LI时,它应该跳转到给定的引用。

来自stackoverflow的相对资源

How do I make the whole area of a list item in my navigation bar, clickable as a link?

Make A List Item Clickable (HTML/CSS)

尽管解决方案接近我的问题。我需要找到通用解决方案。因为我无法逐个设置填充,因为链接标签可能会不时更改。

添加并测试asfollows display:inline-block;padding然后对问题进行排序,但应该不断更改填充。

3 个答案:

答案 0 :(得分:4)

一种简单的方法是:

$('li.roundabout-moveable-item').click(function(e) {
    e.preventDefault();
    $(this).find('a').click();
    return false;
});

确保点击<li>中的任意位置产生与点击包含的<a>相同的结果。

答案 1 :(得分:1)

一个。 CSS解决方案

li.roundabout-moveable-item a{
    display:block;
    width:100px;
    height:100px;
}

B中。 Jquery解决方案

$("li.roundabout-moveable-item").click(function(){
    $('a', $(this)).trigger('click');
});

$("li.roundabout-moveable-item a").click(function(event){
  event.stopPropagation();
  // To prevent li-click being trigged
});  

答案 2 :(得分:0)

我相信您可以在css中使用display: block;来设置<a>标记的样式,以占用整个<li>