Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.02.2013, 15:58
ffx ffx вне форума
Аспирант
Отправить личное сообщение для ffx Посмотреть профиль Найти все сообщения от ffx
 
Регистрация: 29.09.2008
Сообщений: 48

.on() select[multiple] всегда selected на динамических элементах
в общем у меня динамический select, поэтому обработчик вешаю через .on(), но вот в чем проблема при клике по любому элементу в обработчике он уже как selected
$(document).on('click','select[multiple] option',function(e){
	
				e.preventDefault();
console.log(e.target.selected) // всегда true
	   
	});

соответственное если повесить так 'select[multiple] option:selected' то отрабатывает даже на не выделенном элементе
попробовал повесить не на клик а на mousedown в хроме помогло, а в фф нет.
Ответить с цитированием
  #2 (permalink)  
Старый 06.02.2013, 16:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от ffx
'select[multiple] option'
а зачем тут option?
Ответить с цитированием
  #3 (permalink)  
Старый 06.02.2013, 16:09
ffx ffx вне форума
Аспирант
Отправить личное сообщение для ffx Посмотреть профиль Найти все сообщения от ffx
 
Регистрация: 29.09.2008
Сообщений: 48

ну так кликаю то по определенному "option"
Ответить с цитированием
  #4 (permalink)  
Старый 06.02.2013, 16:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

ffx,
<!DOCTYPE HTML>
<html>
<head>
  <title></title>
  <meta charset="utf-8" />
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>

<body>
<select multiple="multiple" size="5">
                      <option value="1">1</option>
                      <option value="2">2</option>
                      <option value="3">3</option>
                      <option value="4">4</option>
  	                  <option value="5">5</option>
                      <option value="6">6</option>
                      <option value="7">7</option>
                      <option value="8">8</option>
                      <option value="9">9</option>
  	                  <option value="10">10</option>
                      <option value="11">11</option>
                      <option value="12">12</option>

 </select>
 <select multiple="multiple" size="5">
                      <option value="1">1</option>
                      <option value="2">2</option>
                      <option value="3">3</option>
                      <option value="4">4</option>
  	                  <option value="5">5</option>
                      <option value="6">6</option>
                      <option value="7">7</option>
                      <option value="8">8</option>
                      <option value="9">9</option>
  	                  <option value="10">10</option>
                      <option value="11">11</option>
                      <option value="12">12</option>

 </select>
<script>
    $(document).on('blur','select[multiple]',function(e){
              alert($(this).val())
				e.preventDefault();


	});
</script>
</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 06.02.2013, 16:19
ffx ffx вне форума
Аспирант
Отправить личное сообщение для ffx Посмотреть профиль Найти все сообщения от ffx
 
Регистрация: 29.09.2008
Сообщений: 48

потеря фокуса не канает, мне короче например надо чтобы при клике, если уже какойто option выбран, то он становился не выбранным
$(document).on('mousedown','select[multiple] option:selected',function(e){
	   $(this).prop('selected',false);
	   return false;
	});

вот это то что надо, и работает в хроме) но охото все же кроссбраузерно
на чекбоксы переходить тоже не охото

p.s. поправил

Последний раз редактировалось ffx, 06.02.2013 в 16:23.
Ответить с цитированием
  #6 (permalink)  
Старый 06.02.2013, 16:28
Профессор
Отправить личное сообщение для Hoshinokoe Посмотреть профиль Найти все сообщения от Hoshinokoe
 
Регистрация: 08.01.2012
Сообщений: 253

ffx,

Используй событие change.
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8" />
    <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<select multiple="multiple" size="5">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
 </select>

 <select multiple="multiple" size="5">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
  	<option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>
    <option value="9">9</option>
  	<option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
 </select>
<script type="text/javascript">
    $(document).on('change', 'select[multiple]', function (e) {
        alert($(this).val())
        e.preventDefault();
    });
</script>
</body>
</html>
Ответить с цитированием
  #7 (permalink)  
Старый 06.02.2013, 16:37
ffx ffx вне форума
Аспирант
Отправить личное сообщение для ffx Посмотреть профиль Найти все сообщения от ffx
 
Регистрация: 29.09.2008
Сообщений: 48

непоможет, уже думал. например один option select, я по нему кликаю но события change не происходит потомучто он не изменился, а мне надо чтобы он deselect
Ответить с цитированием
  #8 (permalink)  
Старый 06.02.2013, 16:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

ffx,
Вы могли бы обьяснить чего вы хотите добится? приходиться гадать - предполагаю вы хотите сбросить старые значения перед установкой новых
<!DOCTYPE HTML>
<html>
<head>
  <title></title>
  <meta charset="utf-8" />
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>

<body>
<select multiple="multiple" size="5" >
                      <option value="1">1</option>
                      <option value="2">2</option>
                      <option value="3">3</option>
                      <option value="4">4</option>
  	                  <option value="5">5</option>
                      <option value="6">6</option>
                      <option value="7">7</option>
                      <option value="8">8</option>
                      <option value="9">9</option>
  	                  <option value="10">10</option>
                      <option value="11">11</option>
                      <option value="12">12</option>

 </select>
 <select multiple="multiple" size="5">
                      <option value="1">1</option>
                      <option value="2">2</option>
                      <option value="3">3</option>
                      <option value="4">4</option>
  	                  <option value="5">5</option>
                      <option value="6">6</option>
                      <option value="7">7</option>
                      <option value="8">8</option>
                      <option value="9">9</option>
  	                  <option value="10">10</option>
                      <option value="11">11</option>
                      <option value="12">12</option>

 </select>
<script>
    $(document).on('focus','select[multiple]',function(e){
              $(this).find('option:selected').attr({selected:!1})
				e.preventDefault();

	});
</script>
</body>
</html>
Ответить с цитированием
  #9 (permalink)  
Старый 06.02.2013, 17:02
ffx ffx вне форума
Аспирант
Отправить личное сообщение для ffx Посмотреть профиль Найти все сообщения от ffx
 
Регистрация: 29.09.2008
Сообщений: 48

рони,
нет вы не правильно меня поняли, я хочу сделать так, если один раз кликнуть, элемент выделяется, еще раз по нему же - выделение снимается, если выделено 10 элементов и по 1 выделенному кликнуть, то он перестает быть выделенным, все остальные 9 все так же выделены

то чего я хочу добиться, по дефолту работает через ctrl+click
Ответить с цитированием
  #10 (permalink)  
Старый 06.02.2013, 17:16
Профессор
Отправить личное сообщение для Hoshinokoe Посмотреть профиль Найти все сообщения от Hoshinokoe
 
Регистрация: 08.01.2012
Сообщений: 253

ffx,

Есть готовый плагин, который обладает данной возможностью.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кроссбраузерная обертка AttachEvent Dim@ Ваши сайты и скрипты 13 21.08.2012 21:21
Установить selected в динамических списках при загрузке страницы FlintOFF jQuery 2 12.03.2010 10:42