jQuery switch-case无法正常工作,语法问题?

时间:2012-01-11 22:15:22

标签: jquery switch-statement

为什么这个开关盒不工作?我已经尝试了所有可能的语法,但它只是不起作用。或者在这种情况下,开关盒是错误的方法吗?

jQuery('#main input').blur(function() {
    switch(jQuery(this).attr('name') {
        case 'email':
            jQuery(this).val('That's you e-Mail adress.');
            break;
        case 'nickname':
            jQuery(this).val('That's your nickname.');
            break;
    }
});

请注意:我在非冲突模式下使用jQuery,这就是我使用jQuery代替$的原因。

3 个答案:

答案 0 :(得分:1)

您有两种类型的错误:

  1. 您错过了)参数附近的括号switch
  2. 你没有在“那是”这个词中转义你的撇号(')。
  3. 更正后的代码:

    jQuery('#main input').blur(function() {
        switch(jQuery(this).attr('name')) { // Added a )
            case 'email':
                jQuery(this).val('That\'s you e-Mail adress.'); // Escaped the '
                break;
            case 'nickname':
                jQuery(this).val('That\'s your nickname.'); // Escaped the '
                break;
        }
    });
    

    <强> 更新

    如果您不熟悉JavaScript中的转义字符串(例如上面的单词That's),请查看此Stack Overflow问题:Escaping Strings in JavaScript

答案 1 :(得分:1)

在同一行中使用多个'似乎会弄乱你的语法。改变如下,

jQuery('#main input').blur(function() {
    switch(jQuery(this).attr('name')) {  // <-- fix 1: added closing )
        case 'email':
            jQuery(this).val("That's you e-Mail adress."); // <-- fix 2: quotes 
        break;
        case 'nickname':
            jQuery(this).val("That's your nickname.");  // <-- fix 3: quotes 
            break;
    }
});

答案 2 :(得分:1)

这里有几个错误:

switch(jQuery(this).attr('name') {

缺少右括号。应该是:

switch(jQuery(this).attr('name')) {

你应该在这个字符串中转义引号:

jQuery(this).val('That's you e-Mail adress.');

像这样:

jQuery(this).val('That\'s you e-Mail adress.');