2010-11-01 4 views
1

Возможно ли инициировать событие изменения в поле выбора, когда selectedIndex или val заданы с помощью jQuery?Trigger onChange событие после selectedIndex изменилось?

Я пробовал и, похоже, не работает. Я пытаюсь заменить поле выбора одним из моих собственных дизайнов. Проблема в том, что если я привязал событие изменения к полю выбора, когда индекс был изменен, ему необходимо запустить это событие.

Есть ли способ сделать это?

var a = $("a"); 
 

 
$("a").on("click", function() { 
 
    
 
    $("#selectList")[0].selectedIndex = a.index($(this)); 
 
    
 
    //now fire event 
 

 
\t return false; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="#">Trigger 1</a> 
 
<a href="#">Trigger 2</a> 
 
<a href="#">Trigger 3</a> 
 

 
<select id="selectList"> 
 
    <option value="1">1</option> 
 
    <option value="2">2</option> 
 
    <option value="3">3</option> 
 
</select>

EDIT: @ xSaint32 ответил на этот вопрос, используя jQuery's trigger метод.

+1

@ Крис - У меня была аналогичная проблема. Я попытался использовать $ ('theSelectBox'). Trigger ('change'), но он не всегда срабатывал. Я закончил тем, что привязал ту же функцию к событию click(), и вместо этого уволил это: $ ('theSelectBox'). Trigger ('click') – dotariel

+0

@Chris Не могли бы вы разместить какой-нибудь код? – lonesomeday

+0

@lonesomeday: Мой код до сих пор слишком длинный для публикации в комментарии и не сохранит форматирование в редактировании. Я посмотрю, смогу ли я сократить его и добавить к редактированию. –

ответ

2

@ xSaint32 ответил на это, используя jQuery's trigger способ.

var a = $("a"), 
 
    select = $("#selectList"); 
 

 
$("a").on("click", function() { 
 
    
 
    select[0].selectedIndex = a.index($(this)); 
 
    
 
    select.trigger("change"); 
 

 
    return false; 
 
}); 
 

 
select.on("change", function() { 
 
    
 
    alert("My index changed"); 
 

 
    return false; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="#">Trigger 1</a> 
 
<a href="#">Trigger 2</a> 
 
<a href="#">Trigger 3</a> 
 

 
<select id="selectList"> 
 
    <option value="1">1</option> 
 
    <option value="2">2</option> 
 
    <option value="3">3</option> 
 
</select>

 Смежные вопросы

  • Нет связанных вопросов^_^