2014-04-04 4 views
-2

В моей строке меню, щелкнув «МЕНЮ», открывается приложение javascript. В некоторых условиях я хочу, чтобы он не открывал приложение, а также показывал панель предупреждения поверх страницы после нажатия на нее. Кажется, что все работает нормально, за исключением того, что я никак не могу поймать событие click ...Невозможно вызвать событие клика

И JS onckick(), и jQuery click() falied. Это текущая простая структура моего кода.

<body> 
    if ($condition){ 
     do sth 
    }else{ 
     echo ("<li><a href=\"#\" id=\"ide-selector\" title=\"" $viewer_title . "\">".MENU."</a></li>"); 
    } 
      . 
      . 
      . 

    <?php 
    switch (false){ 
    case(blah): 
    ?> 
     <script> 
      blah blah   
     </script> 
    <?php 
    break; 
    ?> 
    case($condition): 
    ?> 
     <script> 
     if(jQuery($('#id-selector').click())){   
      blah blah 
     }    
     </script> 
    <?php  
    break; 
    } ?>   

</body> 

Версия OnClick:

<body> 
    <script language="JavaScript" type="text/javascript"> 
     var has_been_clicked = false; 
     function clicked(){ 
      has_been_clicked = true; 
      return has_been_clicked; 
     } 
    </script> 
      . 
      . 
      . 
      }else{ 
       echo ("<li><a href=\"#\" id=\"ide-selector\" onclick=\"clicked();\" title=\"" . $viewer_title . "\">".MENU."</a></li>"); 
      } 
      . 
      . 
      . 
      case($condition): 
      ?> 
       <script> 
        if(has_been_clicked === true){   
         blah blah 
        }    
       </script> 
      <?php   
      break; 
      . 
      . 
      . 

Спасибо заранее.

+0

Typo: 'ide-selector', а не' id-selector' – CodingIntrigue

ответ

0

Заменить

<script> 

    if(jQuery($('#id-selector').click())){   
     blah blah 
    }    
    </script> 

с

<script> 
     $(function() { 
      $('#ide-selector').click(function() { 
       //   blah blah 
      }); 
     });  
</script> 

Кроме того, идентификатор не существует, он может быть опечатка. у вас есть элемент с идентификатором ide-selector

+0

@RGraham Это утверждение смущает меня. Перед запуском необходимо связать событие. В противном случае ничего не произойдет. – War10ck

+0

Обновлено – Smeegs

+0

@ War10ck Не, если * другой * скрипт связал событие и * вы * хотите вызвать его – CodingIntrigue

-2

Ну, во-первых, это встроенный код ... который сам по себе плох. Я также изменил бы условные выражения на jQueryObject.on ('click', function() {// Делайте здесь свои вещи.} Также я переместил бы весь ваш JavaScript во внешний файл. Спасибо Chris.

+0

Вместо того, чтобы комментировать свой собственный пост, вы можете просто отредактировать его, чтобы внести изменения. – Chris

0

В вашем первом кода, вы никогда не определяете и не связываете событие click (возможно, вы сделали это в другом файле. Если это не учитывать определение события и двигаться прямо к его запуску.) Не запускать событие, когда событие запускается. огонь, но в первую очередь необходимо определить функцию, чтобы огонь

определить событие:.

$('#ide-selector').on('click', function (evt) { 
    // You'll probably want to prevent the default 
    // action since the element is an anchor tag 
    // by doing evt.preventDefault(); 

    // Place the code to execute here. 
}); 

Если вы разместили над тегом <a>, вам необходимо обернуть его в блок $(document).ready(function() { // Call code here });.

Trigger:

После того, как событие было определено, вы можете запустить его так же, как у вас есть выше $('#ide-selector').click();. Проблема с вашим предыдущим кодом заключается в том, что селектор ошибочен. $('#id-selector') должно быть $('#ide-selector').

В отношении вашего второго блока кода вы определяете событие, и вы связываете его с помощью родного onclick="", но вы его не запускаете. Запустите это событие, и оно должно работать нормально.

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