1

这是为了自定义dokuwiki,我有这个代码(https://www.dokuwiki.org/tips:clicknshow)我想“反转”。因此,单击一个标题将关闭所有其他标题,从而使打印作业更清晰。

jQuery(function(){
  jQuery('h2,h3,h4,h5,h6').css('cursor','pointer').click(function(){
    var tag=this.tagName, 
        tagIdx=parseInt(tag.match(/\d/)[0],10), 
        clicknshow=jQuery(this).data('clicknshow') || false,
        fname=clicknshow?'show':'hide';

    jQuery(this).data('clicknshow',!clicknshow).nextAll().each(function(){
        var jqNode=jQuery(this);
        if (jqNode.is(':header')){
          var hIdx=parseInt(this.tagName.match(/\d/)[0],10);
          if (hIdx<=tagIdx) { return false; }
          jqNode.data('clicknshow',!clicknshow);
        }
        jqNode[fname]();
    });
  });
});

经过一天的尝试,我需要意识到我根本不知道 jscript,我需要帮助。您可以在此处编辑一段工作代码。 http://jsfiddle.net/W35ny/

4

2 回答 2

1

试试这个

$("h3").click(function(){
    $(this).siblings("div").hide();
    $(this).next().show();
});

对于您的第二个问题如果再次单击,则显示所有问题):

$("h3").click(function(){

    if($(this)[0].getAttribute("DivShown")== "true")
    {
        $(this).siblings("div").show();
        $(this)[0].setAttribute("DivShown","false");
    }
    else
    {
        $(this).siblings("div").hide();
        $(this).next().show();
        $(this)[0].setAttribute("DivShown","true");
    }
});

*这段代码看起来很糟糕,只是解决这个问题的一种棘手方法。

这特别适用于您的 html 元素的顺序(所有<h3><div>都是兄弟,所有<div>都是 a 的文本<h3>)所以你隐藏所有兄弟<div>然后将下一个显示到当前<h3>

于 2013-06-06T21:26:49.547 回答
0

试试这个

$(function () {
    $("h3[class^=sectionedit]").css('cursor', 'pointer').click(function () {
        var isVisible = $(this).next(".level3").is(":visible");
        $("h3[class^=sectionedit]").next(".level3").hide();
        (isVisible) ? $(this).next(".level3").hide() : $(this).next(".level3").show();
    });
});

演示

于 2013-06-06T21:18:58.620 回答