jquery点击显示div

时间:2014-01-30 17:42:04

标签: php jquery html css

我有一个php页面,它将解析一些数据并最终得到一个数据数组。我想将每个键放在自己的div中,以便用户可以单击一个单独的导航面板,并显示正确的div。

 $array = array('userId'=>'bob1','firstName'=>'bob','lastName'=>'Jones');

我有一个处理点击的小jquery。

 $('.nav').click(function()
  {
            $('.userModule').hide();
            var id = $(this).attr('id');
            $('#'+id).show();
 });

所以我整理并设置所有字段:

  $data = "";
  foreach ($array as $key => $value)
  {
      $data .= "<div id='" . $key . "' class='userModule'>";
      $data .= $key . "," . $value;
      $data .= "</div>";
    $navMenu[] = $key;
   }

和我的小导航面板:

 echo "<div id='navMenu'>\n";
 foreach ($navMenu as $v)
 {
    echo "<a href='#' id='" . $v . "' class='nav'>" . $v . "</a><br>\n";
 }
 echo "</div>\n";

然后:

 echo $data;

我这样做,因为我希望导航菜单在左边,而div则在中间。我这样做是通过设置css navMenu:

 #navMenu{
    float:left;
    clear:both;
  }
  .userModule{
    float:left;
  }

我遇到的问题是,如果我点击链接没有任何反应。我可以通过回显foreach循环中设置为$ data的数据来解决这个问题。问题是导航菜单左边不是数据....

3 个答案:

答案 0 :(得分:1)

不止一次使用id不好。 试试这个:

html:

<a href='#' data-id='" . $v . "' class='nav'>" . $v . "</a>

JS:

$('body').on('click', '.nav',  function() {
    $('.userModule').hide();
    var id = $(this).data('id');
    $('#'+id).show();
});

答案 1 :(得分:0)

一般来说,据我所知,来自php的代码不会对来自外部调用的脚本产生任何影响。因此,尝试在锚点中使用onclick并尝试运行它。

<a href="#" onclick="sample (this);"></a>

function sample (id) {
// Now do whatever here.

return false; // To prevent default action.
}

答案 2 :(得分:0)

尝试使用.delegate()函数jQuery。

这将事件绑定到现在和将来的元素。

$('body').delegate('.nav', 'click', function() {
    $('.userModule').hide();
    var id = $(this).attr('id');
    $('#'+id).show();
});