2013-09-19 4 views
1

Мой HTML-код, как это:стоп HTML элементы OnClick Размножение

<div id="divAutoPlay" onclick="autoPlay(0);"> 
     <ul> 
      <li><a href="javascript:;" onClick="autoPlay(3);">3 Times</a></li> 
      <li><a href="javascript:;" onClick="autoPlay(5);">5 Times</a></li> 
      <li><a href="javascript:;" onClick="autoPlay(10);">10 Times</a></li> 
     </ul> 
    </div> 

ul это всплывающее окно приходит на div парении, чтобы выбрать авто раз, и если нажал div сам (о ходе всплывающего окна не отображаются) автоматическое воспроизведение останавливается.

function autoPlay(playCount){ 
     if(autoPlayCount>0) 
      autoPlayCount=playCount; 
     else if(playCount>0){ 
      setTimeout(function(){ 
       autoPlayCount=playCount; 
       $('#divPlay').click(); 
      }, 2000); 
     } 
     // don't know how to add stopPropogation effectively 
     //event.stopPropagation(); 
     // commented codes doesn't worked 
     /*    
     if (event.stopImmediatePropagation){ 
      event.stopImmediatePropagation(); 
     }else if(window.event){ 
      window.event.cancelBubble=true; 
     } 
     */ 
     // for this also changed function definition to pass 'event' onClick="autoPlay(event,10);" 
    } 

Проблема заключается в том, что если я нажал п раз на li, то onclick на div также уволят, делая остановку воспроизведения.

+0

Где id 'divPlay'? –

+0

Некоторые arun ответил на мой вопрос, но он удалился перед моим комментарием (не знаю, почему его решение должно передать событие в качестве последнего аргумента). это сработало, и теперь у меня настоящая проблема. поэтому я попытался зарегистрировать все. на самом деле есть еще 2 вызова, поступающих на «autoPlay» один через 3-5 мсек (который остановлен его решением) и один после 2000 мс (о котором я понятия не имею, откуда он пришел). i suspend $ ('# divPlay'). click(); на setTimeout. в какой-то мере может произойти? ». –

+0

@MShahzadKhan divPlay находится за пределами divAutoPlay. i suspend $ ('# divPlay'). click(); on setTimeout, потому что вещь выполняется после 2000 мс, и журнал показывает, что вызов наступает после 2003-2005 мсек. $ ('# DivPlay') нажмите(). содержит только логику, чтобы начать играть, ничего больше. любой ключ? –

ответ

1

Поскольку элементы li находятся внутри div, вы не можете нажать только на li. Вместо этого вы можете увидеть, какой элемент был нажат, используя event.target

Затем напишите условие, проверяющее, является ли цель div или li.

+0

Мне нужно принимать значения из div и li. мне нужно, чтобы остановить немедленное неожиданное обращение. одна вещь, которую я могу сделать, это со временем. но мой код тоже меня обманывает :-( –

+0

это предложение помогло мне решить проблему –

1

Попробуйте вернуть false с вашего onClick. Это остановит распространение:

<div id="divAutoPlay" onclick="autoPlay(0);"> 
    <ul> 
     <li><a href="javascript:;" onClick="autoPlay(3); return false;">3 Times</a></li> 
     <li><a href="javascript:;" onClick="autoPlay(5); return false;">5 Times</a></li> 
     <li><a href="javascript:;" onClick="autoPlay(10); return false;">10 Times</a></li> 
    </ul> 
</div> 
+0

это не сработало –

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