Jquery概括.click

时间:2010-12-17 10:07:07

标签: jquery

我目前正在使用jquery函数(如下所示)在单击文本时显示一个块。 我不能概括它 $('#comcomcomments'+ id).click 等等,在下面的代码中没有是一个整数。基本上我有一组重复的div,其格式为hiddencomments1,hiddencomments2 .........所以点击一个id = totalcomments1的文本我想显示其id = hiddencomments1

的div
function showcomments(no)
{
 $('#totalcomments'+no).hide();
 $('#hiddencomments'+no).show();
}

7 个答案:

答案 0 :(得分:2)

看起来我加入了这个节目有点晚了,但你应该真的真的真的考虑使用{{3} }或delegate绑定您的活动而不是live

正如您在评论中所说的那样,您最多可以有9,999个元素来绑定此事件,click您将获得每个元素并将相同的事件绑定到每个元素;不好。但是,对于livedelegate,您可以将事件一次绑定到元素的共享祖先(document的情况下为live) ,并利用JavaScript的事件冒泡机制。这无限更有效率。

正如@lonesomeday在评论中所提到的,livedelegate之间的区别是您用来首先绑定事件的语法; live选择要开头的元素,而delegate则没有。

delegate> live> click

无论是您选择的id-starts-with还是class方法,这个概念仍然是相同的:

$(document).delegate('[id^=totalcomments]', 'click', function() {
    $(this).hide();
    $('#hiddencomments'+this.id.replace('total','hidden')).show();
});

$('.yourSharedClass').live('click', function() {
    $(this).hide();
    $('#hiddencomments'+ this.id.replace('total','hidden')).show();
});

再次,从性能的角度来看,使用基于类的系统会更快。

我使用live和另一个使用delegate做了一个示例,以提供使用这两个示例。

答案 1 :(得分:1)

这样的事情:

$('[id^=totalcomments]').click(function() {
    $(this).hide();
    $('#hiddencomments'+this.id.match(/\d+$/)[0]).show();
});

请注意,您应该使用类,而不是让您的生活更轻松。 :)

答案 2 :(得分:1)

这样的东西?

$('[id^=totalcomments]').click(function () {
    $(this).hide();
    $('#' + this.id.replace('total','hidden')).show();
});

答案 3 :(得分:0)

为什么不使用类来选择它们而不是id?

答案 4 :(得分:0)

使用索引有很好的方法可以执行此操作,具体取决于您的标记。更糟糕的方法是在id:

上使用substr函数
$('.totalcomments').click(function(){
    $(this).hide();
    $('#hiddencomments' + this.id.substr(-1)).show();
});

请注意,这假设(a)所有totalcomments#个元素都有一个类totalcomments且不超过10个(索引0-9)。

答案 5 :(得分:0)

尝试这样的事情.... 首先隐藏所有评论

 $('#hiddencomments'+no).hide();

然后显示正在点击的评论

$('#totalcomments'+no).click(function(){
  $('#hiddencomments'+no).show();});

答案 6 :(得分:0)

你应该有一个课程,在你的div上说“可见”......

$('div.visible').bind('click',function(){
  $(this).hide().addClass('hidden');
});

$('div.hidden').bind('click',function(){
  $(this).show().addClass('visible');
});

然后你可以做两个这两个类的样式。