2013-04-29 61 views
0

後不工作,我有以下的jQuery代碼: - 。。對(「點擊」,「IMG」功能(E)回傳

$('.rpItem').on("click", "img", function (e) { 
    alert('here'); 
    var text = $(this).siblings('span.rpText').text(); 
    e.preventDefault(); 
    e.stopPropagation(); 

    var args = { 
     reportName: text 
    }; 
    $.ajax({ 
     type: "POST", 
     url: "Dashboard.aspx/AddToFavourites", 
     data: JSON.stringify(args), 
     contentType: "application/json;charset=utf-8;", 
     success: function (data) { 
      __doPostBack('#MainMenuUP', text); 
      //__doPostBack('<%= MainMenuUP.ClientID %>', text); 
     }, 
     error: function() { 
     } 
    }); 
}); 


$("#reports_textSearch").keyup(function() { 
    var textLength = $(this).val().length; 
    delay(function() { 

     if (textLength == 0) { 
      emptySearchString(); 
     } 

     if (textLength > 2) { 
      var args = { 
       reportName: document.getElementById('reports_textSearch').value 
      }; 
      doSearchString(args); 
     } 
    }, 1000); 

}); 

function doSearchString(args) { 
    $.ajax({ 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     url: "Dashboard.aspx/FetchReports", 
     data: JSON.stringify(args), 
     dataType: "json", 
     success: function (data) { 
      //__doPostBack('#MainMenuUP', data.d); 
      __doPostBack('<%= MainMenuUP.ClientID %>', data.d); 
     }, 
     error: function (data) { 
     } 
    }); 
} 

,並在第一時間它的做工精細的回傳後然而,在doSearch不斷正常工作,而

$('.rpItem').on("click", "img", function (e) { 

失敗。它甚至不是通過代碼去。

我試圖取代

__doPostBack('<%= MainMenuUP.ClientID %>', data.d); 

__doPostBack('<%= MainMenuUP.UniqueID %>', data.d); 

但少了點,我不想刷新頁面。

任何幫助將非常感謝!

感謝

+0

您是否在回調函數中添加了新的'.rpItem'元素? – Blazemonger 2013-04-29 14:18:16

回答

3

您的選擇更改爲這一個:

$('body').on("click", ".rpItem img", function (e) { 
    // your code 
}); 
+0

要澄清,請將您的選擇器更改爲初始定位未被回發代替的元素。 – 2013-04-29 14:19:43

+0

@Mojtaba,點擊作品,但它給我,我不想 – Johann 2013-04-29 14:24:59

+0

@Kevin刷新頁面,沒明白你的意思 – Johann 2013-04-29 14:26:55

0

如果.rpItem是你的Ajax調用期間更換閱讀以下內容:

第一次你的JS執行時,它結合了on事件到現有的rpItems。 除非您重新執行完成綁定的腳本,否則任何新添加的.rpItem都將跳過此綁定。

爲了避免這種情況,您可以使用文檔作爲@Mojtaba建議的綁定,但請記住,您將「綁定」添加到文檔中以導致「檢查」.rpItem img是否已被點擊或不是時間點擊文件上的東西。

否則,您可以創建,將您.rpItem作爲參數,將實現明確的綁定功能。在每個新的.rpItem添加到您的頁面之後,您可以調用此函數來綁定click事件。例如:

function foo(arg) { 
    $(arg).on("click", "img", function (e) { 
    ... 
    } 
} 
$(document).ready(function(){ 
    $('.rpItem').each(function(){ 
     foo($(this)); 
    }; 

});