属性 - 隐藏/显示| jQuery的/ JAVA

时间:2018-01-22 18:45:56

标签: javascript jquery

这与游戏相关,但我对我的部分代码所获得的结果感到好奇。在我的代码(全局)的顶部,我已经把

if ( ( $( this ).attr ( "data-require" ) == "police" && playerJob != "police") ) {
        $( this ).hide();
    } else {
        $( this ).show();
    }

    if ( ( $( this ).attr ( "data-require" ) == "mechanic" && playerJob != "mechanic") ) {
        $( this ).hide();
    } else {
        $( this ).show();
    }

所以这是我的代码:

.ul-accordion li i.fa-chevron-down {
    font-size: 16px;
    float:right;
    padding:0 20px;   
}
  • 如果我设置了playerjob ="警察"它可以正常工作。然后它只 显示我(按HTML)设置的按钮 数据需要="警察" - 应该这样做。
  • 如果我做playerJob ="" (没有),它隐藏了两个按钮 - 它就是这样 应该做的。
  • 如果我做playerJob ="机械师"它显示了那个 数据需要="警察"和data-require =" mechanic" - 它是 应该这样做。

任何人都知道为什么?

2 个答案:

答案 0 :(得分:0)

为什么是因为如果第一个条件为真,你就不要阻止第二个条件运行,这不会是真的,并且会撤消在第一个条件中所做的任何事情

似乎你可以将整个事情简化为:

$( this ).toggle( $(this).attr ("data-require") ===  playerJob );

toggle(boolean)可与hide / show相媲美,具体取决于boolean

答案 1 :(得分:0)

最后一个条件运行......并且可以覆盖第一个条件。

条件满足后尝试return;

if ( ( $( this ).attr ( "data-require" ) == "police" && playerJob != "police") ) {
  $( this ).hide();
  return;
}

if ( ( $( this ).attr ( "data-require" ) == "mechanic" && playerJob != "mechanic") ) {
  $( this ).hide();
  return;
}

// If no conditions are meet...
$( this ).show();