Jquery和change()有多个函数?

时间:2009-09-21 20:55:15

标签: jquery onchange

我正在尝试找到更改我的选择框时发生不同功能的最佳方法。

这是我的选择HTML

<select name="event-recurring">
<option selected="true">None</option>
<option value="daily">Daily</option>
<option value="weekly">Weekly</option>
<option value="monthly">Monthly</option>
</select>

我的jquery是:

$('select[name=event-recurring] option:selected').change (function (){
//Will Do Something
});

我如何告诉它在不同的值上做些不同的事情?

解决方案:

$('#event-recurring').change(function (){
    var $select = $(this);

    switch($select.val()) {
        case "daily":
           $('#recurring-options').remove();
           $("<div id='recurring-options' class='row'><label>Choose:</label>Choose a Date</div>").insertAfter('#recurring');
            break;
        case "weekly" :
        $('#recurring-options').remove();
              $("<div id='recurring-options' class='row'><label>Choose:</label>Weekly</div>").insertAfter('#recurring');
            break;
        case "monthly":
        $('#recurring-options').remove();
           $("<div id='recurring-options' class='row'><label>Choose:</label>Monthly</div>").insertAfter('#recurring');
            break;
        default:
            $('#recurring-options').remove();
            break;
    }    
});

4 个答案:

答案 0 :(得分:3)

$('select[name=event-recurring]').change (function (){
    var $select = $(this);

    switch($select.val()) {
        case "daily":
            // do something
            break;
        case "weekly" :
            // do something else
            break;
        default:
            // default case
            break;
    }    
});

我建议给<select>一个id并使用它来选择它,因为它会比名字更快

答案 1 :(得分:1)

非常确定这将在更改功能中起作用:

$('select[name=event-recurring]').change (function (){
    switch ($('option:selected', this).val()) {
      case "daily":
        // do something
        break;
      case "weekly":
        // do something
        break;
      case "monthly":
        // do something
        break;
    }
});

答案 2 :(得分:0)

你的意思是在不同的选择值上做不同的事情吗?

如果是这样,我相信你可以在函数中使用'this'对象来引用事件的来源(在这种情况下是select),你可以使用'.val()'或'.text来检查它的值。 )''看看它的价值是什么,并相应地处理。

希望这有帮助。

答案 3 :(得分:0)

在所选值上使用子查询,并将其值属性作为行动的鉴别器:

$('select[name=event-recurring]').change( function() {
    var value = $(this).find(':selected').attr('value');
    if (!value) { // none
        do something
    }
    else if (value == 'daily') {
        do something else
    }
    ...
});