2016-08-11 46 views
1

我有一件很奇怪的事情發生在我身上。我從來沒有見過這個。我不是在jQuery的/ JavaScript的很內行,但我外行眼裏,這看起來瘋狂...jQuery id-開始 - 觸發器不工作

正在發生的事情是,如果沒有alert('hello')$(document).ready作用下,ID-開始,有選擇不觸發(即不提醒「再見」)。如果我在$(document).ready)函數下面加上alert('hello'),突然出現alert('goodbye')的字樣。

這怎麼可能?

<script type="text/javascript"> 
    $(document).ready(function(){ 
     alert('hello'); 
     $('a[id^="hash-"]').click(function(e){ 
      e.preventDefault(); 
      alert('goodbye'); 
     }); 
    }); 
</script> 

我自己也嘗試用。對():

<script type="text/javascript"> 
    $(document).ready(function(){ 
     alert('hello'); 
     $('a[id^="hash-"]').on('click', function(e){ 
      e.preventDefault(); 
      alert('goodbye'); 
     }); 
    }); 
</script> 

元素最初添加在頁面加載,但可以改變的,如果你篩選bootgrid表中的HTML,所以我改成了.on()正如評論中所建議的那樣。

<td> 
    <a id="hash-1" href="#" data-row-id="1"> 
     <i class="zmdi zmdi-arrow-left-bottom" title="Select this site"></i> 
    </a> 
</td> 

我又試圖這樣(因爲在上述圖標所在的原<td>也是動態創建的):

$(document).on('click', 'a[id^="hash-"]', function(e){ 
    e.preventDefault(); 
    alert('goodbye'); 
}); 

而且不成功......

任何幫助將不勝感激。

+2

你是如何將頁面上的元素? –

+0

檢查事件是否實際綁定到元素。 –

+1

是否動態添加元素?如果您需要委派事件,請使用'on'方法而不是'click'。我的本能說「是」 – epascarello

回答

-3

這對我來說工作得很好。

$(document).on('click','a[id^="hash-"]',function(e){ 
 
    e.preventDefault(); 
 
    alert('goodbye' + $(this).text()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
 
    <a id="hash-1">1</a> 
 
    <a id="hash-2">2</a> 
 
    <a id="hash-3">3</a> 
 
    <a id="hash-4">4</a>

+1

,因爲你的代碼在元素在頁面上後執行。 – epascarello

+0

@epascarello,我已經應用了代表團點擊即使使用on()方法也不要刪除投票 –