我动态地需要这个代码

时间:2017-06-05 11:57:00

标签: javascript switch-statement 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;
    }
}); 

2 个答案:

答案 0 :(得分:1)

直接将id传递给受尊重的地方而不是切换。并使用on()来动态追加元素。它将执行取决于你的身份



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);
  }
});




答案 1 :(得分:0)

使用此JS而不是您的开关案例。如果您不担心默认情况

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;
    }
});