2014-09-12 92 views
0

我被困在非常正常的scnerio中。我已經被Yii CLINK尋呼機分頁控件生成的HTML代碼:防止標記在URL上重定向

<ul class="yiiPager" id="yw0"> 
     <li class="first hidden"><a href="/advisory_system/administrator/index.php/specialCategory/gridview?optget_grid=&amp;analysis_type=4&amp;_=1410520989427">&lt;&lt; First</a></li> 
     <li class="previous hidden"><a href="/advisory_system/administrator/index.php/specialCategory/gridview?optget_grid=&amp;analysis_type=4&amp;_=1410520989427">&lt; Previous</a></li> 
     <li class="page selected"><a href="/advisory_system/administrator/index.php/specialCategory/gridview?optget_grid=&amp;analysis_type=4&amp;_=1410520989427">1</a></li> 
     <li class="page"><a href="/advisory_system/administrator/index.php/specialCategory/gridview?optget_grid=&amp;analysis_type=4&amp;_=1410520989427&amp;page=2">2</a></li> 
</ul> 

,我想AJAX分頁對我的要求,所以,我寫了jQuery代碼:

$("ul.yiiPager li.page a").on('click',function (e){ 
     e.preventDefault(); 
     alert($(this).attr('href')); 
     return false; 
     loadlistData($(this).attr('href')); 
    }); 

但是通過點擊任何<a>標籤它重定向到的鏈接給出在href爲防止我使用e.preventDefault();但它仍然沒有在JQuery代碼和警報不顯示。

請幫忙。提前致謝。

+0

是您動態創建的錨標籤嗎? – 2014-09-12 11:35:19

+0

@AnoopJoshi是的,它通過YII分頁組件創建。 – 2014-09-12 11:36:13

+0

我用你的示例代碼做了一個jsfiddle,一切都很順利,我看到了警報。順便說一句,''return false;'最後可以執行'loadlistData'。 http://jsfiddle.net/w01ke3ts/ – frikinside 2014-09-12 11:38:27

回答

4

由於您的錨標籤是動態創建的。您需要使用事件委派。因爲這些元素應該在事件綁定時出現在dom上。在事件委託事件的情況下被綁定到其上呈現了DOM

$(document).on('click', "ul.yiiPager li.page a", function(e) { 
    e.preventDefault(); 
    alert($(this).attr('href')); 
    loadlistData($(this).attr('href')); 
}); 
+1

非常感謝Anoop :) – 2014-09-12 11:39:03

+1

哦!你是對的。這應該可以解決問題。我沒有意識到動態生成的鏈接 – frikinside 2014-09-12 11:39:36

0

案例1(直接)的document或父元素:

$(「ul.yiiPager li.page一」) .on(「click」,function(){...}); 我希望每個ul.yiiPager li.page在ul.yiiPager裏面都能聽到:當你點擊時,做一些事情。

案例2(代表):

$( 「ul.yiiPager li.page」)上( 「點擊」, 「A」,函數(){...}); ul.yiiPager li.page當你的任何一個「a」的子元素被點擊時,用它們做一些事情。

摘要

在情況1中,每個跨距的那些已經被單獨地給予說明。如果創建新跨度,他們將不會聽到該指令,並且不會響應點擊。每個人都直接負責自己的事件。

在情況2中,只有容器被給出指令;它負責注意代表其子元素的點擊。捕捉事件的工作已經委派。