2014-04-04 173 views
-2

在我的菜單欄中,單擊「MENU」打開一個JavaScript應用程序。在某些情況下,我想阻止它打開應用程序,並在點擊頁面頂部顯示警報條。 似乎任何事情都可以正常工作,除非我無法捕捉點擊事件...無法觸發點擊事件

JS onckick()和jQuery click()都會失敗。 這是我的代碼目前簡單的結構。

<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

錯字:'ide-selector',不是'id-selector' – CodingIntrigue

回答

0

更換

<script> 

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

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

此外,ID不存在,它可能是一個錯字。你有一個ID爲ide-selector

+0

@Rraham這句話讓我很困惑。您必須事先綁定事件才能觸發它。否則什麼都不會發生。 – War10ck

+0

已更新 – Smeegs

+0

@ War10ck如果*另一個*腳本綁定了一個事件並且*您想觸發它,則不會如此 – CodingIntrigue

-2

嗯,對於一個,它是內聯代碼...這本身就是壞的。我也會將條件改爲jQueryObject.on('click',function(){//在這裏做你的東西。}另外我會把你所有的JavaScript移動到一個外部文件中 謝謝Chris。

+0

而不是評論你自己的帖子,你可以編輯它來進行更改。 – Chris

0

在你的第一個代碼塊,你永遠不會定義和綁定一個事件(你可能已經在另一個文件中完成了這項工作,如果這樣做不理會定義事件並直接觸發它)。事件觸發時沒有任何事情需要執行。火,但你首先需要定義一個函數來火

定義事件:

$('#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 });塊中。

觸發:

一旦事件被定義,就可以觸發它就像你有以上$('#ide-selector').click();。你上面的代碼的問題是選擇器是錯誤的。 $('#id-selector')應該是$('#ide-selector')

參照您的第二個代碼塊,您可以定義該事件,並使用本機onclick=""將其綁定,但您從不觸發它。觸發該事件,它應該可以正常工作。