1

这是代码:http: //jsfiddle.net/t2nite/KCY8g/

我试图让SHOW按钮下方的HIDE/SHOW ALL按钮是,如果您按下一个按钮,它将显示它的文本并隐藏其他文本。

我使用了这段代码,但是只要我在任何按钮上点击显示,它就会显示和隐藏自己。

$(".show").click(function() {
   $(this).parent().find("p").show(200);
   $("p").not(this).hide(200);
});​

帮助。

4

7 回答 7

3

您的问题是this在显示功能中不是<p>按钮。

$(".show").click(function() {
    var $thisP = $(this).parent().find("p")
    $thisP.show(200);
    $("p").not($thisP).hide(200);
});​

http://jsfiddle.net/KCY8g/11/

于 2012-10-17T19:03:00.457 回答
2

jsFiddle 演示

基本上你想隐藏除当前区域之外的所有“itsawrap p”区域。

$(".show").click(function() {
    var _p = $(this).parent().find('p');
    // maybe even do: $(this).closest('.itsawrap').find('p');
    // (if you ever think you'll wrap any of these things in other divs/etc

    _p.show(200);
    $('.itsawrap p').not(_p).hide();
});​
于 2012-10-17T19:02:18.163 回答
1

将显示代码更改为:

$(".show").click(function() {
    var container = $(this).closest(".itsawrap");
    $(".itsawrap").not(container).find("p").hide(200);
    container.find("p").show(200);
});​

在这里工作演示:http: //jsfiddle.net/jfriend00/6ypRz/

这适用于容器级别,因此您可以在所需的容器上进行操作。

于 2012-10-17T19:02:10.880 回答
0

问题出在this.

$(".show").click(function() {
    var p = $(this).parent().find("p");
    p.show(200);
    $("p").not(p).hide(200);
});​
于 2012-10-17T19:06:59.390 回答
0

最短的方法之一:

$(".show").click(function(e) {
    $("p").not($(this).parent().find("p").show(200)).hide(200);
});

jsfiddle

于 2012-10-17T19:08:06.840 回答
0

错误是父“this”是按钮,所以 $("p").not(this).hide(200); 说除了你的按钮之外的所有 p,它仍然是所有 p。

$(".show").click(function() {
     var parent = $(this).parent();
     $(".itsawrap").not(parent).find('p').hide(200);
     parent.find('p').show(200);
});​

http://jsfiddle.net/renekoch/KCY8g/17/

于 2012-10-17T19:12:21.223 回答
0

像这样?

$("#btn").click(function() {
    var oneshow = false;
    $(".para2, .para3, .para4").each(function() {
        if ($(this).is(":visible")) {
            oneshow = true;
        }
    });
    if (oneshow == true) {
        $(".para2, .para3, .para4").hide(200);
    } else {
        $(".para2, .para3, .para4").show(200);
    }
});

$(".hide").click(function() {
    $(this).parent().find("p").hide(200);
});

$(".show").click(function() {
    var p = $(this).parent().find("p");
    $(p).show(200);
    $(parent).not(p).hide(200);
});​
于 2012-10-17T19:03:17.383 回答