如何使用$(this).show()显示按钮;

时间:2011-12-10 12:02:53

标签: javascript jquery loops button

我有两个网格,它们都显示按钮。一个网格显示数字,无论是真还是假,是或否,另一个网格显示字母,真,假,是和否。

第二个网格未显示在代码中(使用css不显示第二个网格按钮(.answerBtns))。

现在我已将其包含在我的代码中:

var clickedNumber = 10;
$('.answerBtns').each(function (index) {
    if (index < clickedNumber) {
        $(this).show();
    }
});

现在这样做无论我在第一个网格中选择了哪个按钮,它总是会显示10个按钮。所以我需要的是clickNumber循环,所以它遍历按钮,所以如果用户选择第一个网格中的按钮“1”(你必须使用(打开网格)链接打开的网格,那么它应该显示第一个按钮是第二个网格中的“A”,如果用户在第一个网格中选择按钮“2”,那么它应该在第二个网格中显示前两个按钮“A”和“B”,如果“3”则显示“A” ,“B”和“C”等。

但是如果用户在第一个网格中选择“真或假”按钮,它应该只在第二个网格中显示“true”和“false”按钮,如果用户在第一个网格中选择“是或否”按钮,它应该显示仅在第二个网格中显示“是”和“否”按钮。

有谁知道怎么做?

谢谢

代码在jsfiddle中,单击here

1 个答案:

答案 0 :(得分:1)

如果您将以下内容添加到buttonclick()功能的末尾,则会显示或隐藏相应数量的按钮,如this updated jsfiddle中所示。

$('.answerBtns').each(function (index) {
   if (index < button.value)
      $(this).show();
   else
      $(this).hide();
});

请注意,除了使用点击按钮中的值而不是硬编码的10之外,这与您问题中的代码段基本相同。

但更一般地说,如果您使用的是jQuery,那么使用jQuery 。也就是说,不要在每个按钮中放置内联onclick处理程序。他们都只是说onclick="buttonclick(this);",他们都有相同的类,所以你应该从HTML中删除这些内联处理程序并使用jQuery进行设置。

所以你可以用这样的东西替换你的buttonclick功能:

$(".gridBtns").click(function() {
   // what you need from your "buttonclick(button)" function should go here
   // except instead of the "button" parameter you can just use "this",
   // e.g., this.value

   var clickedNumber = this.value;

   $('.answerBtns').each(function (index) {
      if (index < clickedNumber)
         $(this).show();
      else
         $(this).hide();
   });

});

我没有时间为你做“是或否”的部分,但也许你可以从上面解决这个问题?在点击处理程序中,您可以测试if (this.value==="yes or no"),依此类推。