javascript
  • jquery
  • ajax
  • jquery-ui
  • 2010-09-24 70 views 1 likes 
    1
    <div id="divItems"><div id="divItemsContent"></div></div> 
    

    我想我知道問題是什麼,只是不知道如何解決它。下面是代碼:jQuery對話框中的jQuery元素在ajax調用後停止工作

    function SplitOrder() { 
        var SplitTable = $.ajax({ 
         url: 'AjaxActions/SplitTable.aspx?FromObjectID=' + $('#hidObjectID').val() + '&ToObjectID=' + ObjectID[1], 
         async: false 
        }).responseText; 
    
        var dialog = $('#divItems').dialog({ 
         autoOpen: false, 
         height: 500, 
         width: 600, 
         title: 'פיצול שולחן' 
        }); 
    
        var content = $("#divItemsContent"); 
        content.html(""); 
        content.html(SplitTable); 
        dialog.dialog("open"); 
        //הפעולות על החשבונות 
        /************************************************/ 
    
        $('#imgLeftArrow').click(
    
        function() { 
    
         $(this).css("background-color", "white"); 
    
    
         //AJAX הבאת נתוני רשומת ההזמנה מהשרת ב 
         var SplitTable = $.ajax({ 
          url: 'AjaxActions/SplitUpdate.aspx?FromObjectID=' + $('#hidObjectID').val() + '&ToObjectID=' + ObjectID[1] + '&ItemID=' + $('#hidItemID').val() + '&ItemAmount=' + $('#hidItemAmount').val(), 
          async: false 
         }).responseText; 
    
         content.html(""); 
         content.html(SplitTable); 
        }); 
    
    
        $('#imgRightArrow').click(
    
        function() { 
         //AJAX הבאת נתוני רשומת ההזמנה מהשרת ב 
         var SplitUpdate = $.ajax({ 
          url: 'AjaxActions/SplitUpdate.aspx?FromObjectID=' + $('#hidObjectID').val() + '&ToObjectID=' + ObjectID[1] + '&ItemID=' + $('#hidItemID').val() + '&ItemAmount=' + $('#hidItemAmountTo').val(), 
          async: false 
         }).responseText; 
        }); 
    
        /************************************************/ 
    
        $('div[id^="Item_"]').hover(
    
        function(e) { 
         $(this).css("cursor", "pointer"); 
         $(this).css("background-color", "blue"); 
        }, 
    
        //כשיוצאים מהשולחן DIVהעלמת ה 
    
    
        function() { 
         $(this).css("background-color", "white"); 
        }); 
    
        /************************************************/ 
    
        //טיפול בבחירת פריט להוספה/הורדה מהחשבון 
        $('div[id^="Item_"]').click(
    
        function() { 
         $('#imgLeftArrow').css("background-color", "yellow"); 
    
         //הוספת הפריט לשדה הנסתר 
         $('#hidItemID').val($(this).children().html()); 
         $('#hidItemName').val($(this).children().next().html()); 
         $('#hidItemAmount').val($(this).children().next().next().html()); 
    
        }); 
    }​ 
    

    我想顯示使用Ajax調用一個頁面,並把結果在對話框中......這是偉大的工作!接下來,如果有人選擇了一個項目並按左箭頭圖片,我正在做另一個Ajax調用,它更新數據庫並返回新的HTML(使用XML/SXL),我也從中得到了正確的結果。

    我得到第一個懸停並單擊工作很好,但在更新數據並獲得結果後,懸停停止工作,並且還在箭頭上單擊事件。我認爲這是因爲我在點擊事件函數中呈現數據,但我不知道如何解決它。

    +0

    對不起,但沒有html的禮物呢......而且,沒有冒犯,但你不覺得英語評論是更好的每個程序員閱讀和理解你的代碼?我們都用英文編碼,對吧? :) – 2010-09-24 00:54:49

    +0

    我更多然後同意你的語言,但它不是我的決定;-) – Erez 2010-09-24 01:11:45

    回答

    3

    如果您要返回HTML,並且您希望在新返回的html內的元素上發生點擊事件和懸停事件,那麼您需要使用.live() jQuery關鍵字。

    更新:從jQuery 1.7開始,不推薦使用.live()方法(並且不再存在從1.9開始!)。使用.on()來附加事件處理程序。老版本jQuery的用戶應優先使用.delegate()而不是.live()

    +0

    10倍,很多.....我等了一天的生活,以獲得一個答案20分鐘.... :-)並且你不能顯示我詢問過多少人:-) – Erez 2010-09-24 01:16:16

    +0

    @Erez,歡迎你。玩得開心 – griegs 2010-09-24 01:27:12

    1

    我想我明白你想要做什麼......

    如果有任何HTML的是在這些語句:

    $('#hidItemID').val($(this).children().html()); 
    $('#hidItemName').val($(this).children().next().html()); 
    $('#hidItemAmount').val($(this).children().next().next().html()); 
    

    包含jQuery的,它將被作爲純HTML,因爲它們在事件綁定後被添加到DOM中。格里格斯提出的建議將會發揮作用。

    你需要類似於:

    $('div[id^="Item_"]').live('hover', function(event) { 
        // do something on hover 
    }); 
    
    $('#imgLeftArrow').live('click', function(event) { 
        // do something on click 
    }); 
    
    $('#imgRightArrow').live('click', function(event) { 
        // do something on click 
    }); 
    

    這樣新的元素也將觸發處理程序。

    +0

    10x :-)得到它的工作:-) – Erez 2010-09-24 01:18:23

    相關問題