2016-03-08 65 views
0

因此,我在我的程序中使用JQuery滑塊https://jqueryui.com/slider/,並試圖釋放滑塊觸發一個更新數據庫的事件。我有什麼是我怎樣才能使一個jQuery UI滑塊點擊後檢測鼠標

$('.ui-slider-handle').mouseup(function() { 
    var $span = $(this).closest('#sliders').find('span.value'); // the span element that holds the value associated with the slider that was clicked 
    $.ajax({ 
     method: 'POST', 
     url: '/UpdateAnswer', 
     data: { 
      Answer: { 
       QuestionId: $span.attr('data-qstnid'), 
       AnswerId: $span.attr('data-answid'), 
       AnswerVal: parseInt($span.text(), 10) 
      }, 
      pid: $('input[name="pid"]').val() 
     } 
    }); 
}); 

,這工作得很好,除了在1型意想不到的情況:當按住滾動條上的鼠標按鈕,移動滑塊,然後鬆開鼠標之前移動他們的鼠標關閉滑塊。在這種情況下,滑塊的$span未定義。

解決此問題的最佳方法是什麼? JavaScript/jQuery是否有這樣做的自然方式?或者我將不得不創建一個mousedown處理程序,它將元素傳遞給一些其他函數,然後附加一個mouseup處理程序......或類似的東西?

讓我知道是否需要更詳細地描述我的情況。

回答

0

您應該使用jQueryUI事件stop,他們已經爲您解決了這個問題。從documentation

$(".selector").on("slidestop", function(event, ui) {}); 
0

而不是使用一個mouseup事件,你也許應該使用滑塊本身的changestop事件。

$(".selector").on("slidechange", function(event, ui) {}); 

$(".selector").on("slidestop", function(event, ui) {}); 
+0

不知道這些.... –

+0

什麼是'.selector'應該被選擇? –

+0

您創建UI滑塊的元素。創建滑塊時,您還可以添加事件處理程序作爲和選項。有關示例,請閱讀鏈接的API文檔。 – jmoerdyk