【问题标题】:I need this code with dynamicly我需要动态的这段代码
【发布时间】:2017-06-05 11:57:00
【问题描述】:

我有一个标题菜单,我不想在这样的 switch case 中为每个菜单链接添加,我怎样才能做到动态...

var sections = $(".href a");
var content = $("#load");

sections.click(function(){
    switch(this.id){            
        case ('/p/settings/header-settings'):
            $(content).load('/p/settings/header-settings #load');
            window.history.pushState('user', 'user', '/p/settings/header-settings');
            break;
        case ('/p/settings/site-verifications'):
            $(content).load('/p/settings/site-verifications #load');
            window.history.pushState('user', 'user', '/p/settings/site-verifications');
            break;
        case ('/p/settings/analysis-settings'):
            $(content).load('/p/settings/analysis-settings #load');
            window.history.pushState('user', 'user', '/p/settings/header-settings');
            break;
        default:
            $(content).load('/p #load' );
            break;
    }
}); 

【问题讨论】:

  • 您是否有一组特定的选项可以允许?或者一个允许的选项应该属于某种模式,比如/p/settings/* 或...其他?
  • 没有任何特定的设置选项允许...
  • 那你如何决定什么属于默认情况?

标签: javascript switch-statement case


【解决方案1】:

直接传递带有尊重位置的 id 而不是 switch 。并使用 on() 动态附加元素。它的执行取决于您的 id

var sections = $(".href a");
var content = $("#load");

sections.on('click', function() {
  var id = this.id;
  if(condition) //add with some  false condition as you wish for go to  default statement s
 {
  $(content).load('/p #load' );
 }else{
  $(content).load(id + ' #load');
  window.history.pushState('user', 'user', id);
  }
});

【讨论】:

  • 使用 default 选项会怎样?
  • 如果id 被定义了,但在你不能说id 在默认情况下是未定义的情况下怎么办
  • @NadirLaskar 我只是在! 添加了错误语句define.not 主要集中在id undefined
  • 如果需要发送到默认值的部分的 id 不是错误的,该怎么办。
  • @NadirLaskar 它不是应用默认语句的 switch 案例。而且我也不仅仅提到 id 。需要一些条件来单独的默认案例和其他案例
【解决方案2】:

使用这个 JS 而不是你的 switch case。如果你不担心默认情况

sections.click(function(){

    $(content).load(this.id+' #load');
    window.history.pushState('user', 'user', this.id);

}); 

如果您也想处理默认条件,那么您可以使用简化的开关盒,如下所示。

sections.click(function(){
    switch(this.id){            
        case ('/p/settings/header-settings'):
        case ('/p/settings/site-verifications'):
        case ('/p/settings/analysis-settings'):

        //For more case just add here the below code remain same

        $(content).load(this.id+' #load');
        window.history.pushState('user', 'user', this.id);

        break;
        default:
            $(content).load('/p #load' );
            break;
    }
}); 

【讨论】:

  • 非常感谢,现在我也遇到了问题。 $('#tabs').tabs();加载时 jquery 选项卡无法正常工作...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多