jquery:“onclick”中的函数

时间:2010-08-29 17:05:28

标签: jquery html

    $('.more').click(function test(id) {
          $('#MoreFriendInfo'+id).toggle();
   });

我做了这个,功能测试(id),现在我该如何在html / php中建立正确的链接以获取ID? 我试过这个,但它不起作用:

<a class='more' href="javascript:void(0);" onclick='test(<?php echo $showInfo["bID"]; ?>)'>mer</a>

在萤火虫中我得到“测试没有定义”

3 个答案:

答案 0 :(得分:1)

在所有这些中,我们从标记中删除了 onclick

您可以使用数据属性,如下所示:

<a class='more' href='#' data-id='<?php echo $showInfo["bID"]; ?>'>mer</a>

然后在.click()处理程序中抓取它,如下所示:

$('.more').click(function () {
  $('#MoreFriendInfo'+$(this).attr('data-id')).toggle();
});

或者,如果它在另一个容器中,则忘记ID和find it relatively,例如,如果标记是这样的:

<div class="container">
   <a class='more' href="#">mer</a>
   <div class="moreFriendInfo">Content</div>
</div>

你可以这样做:

$('.more').click(function () {
  $(this).closest('.container').find('.moreFriendInfo').toggle();
});

(在这种情况下,您实际上可以使用.siblings(),但这意味着更通用的方法)

答案 1 :(得分:1)

您定义它的方式,test(id)是一个仅在.click()范围内的内部函数。

请注意,当您使用.click()时,您正在有效地定义onclick。您也不需要将它添加到标记中。

我不会传递id,而是设计标记,使得元素的放置方式使得我可以使用选择器上下文来传递选择器的起始点。

$('.more').click(function () { $('.moreFriendInfo',this).toggle(); });

答案 2 :(得分:0)

尼克的答案几乎是完美的,但除非data-id是有效的HTML属性,否则我会使用“rel”而不是“data-id”。