Javascript MVC-在ajax调用中操作Jquery插件属性

Javascript MVC-在ajax调用中操作Jquery插件属性,javascript,jquery,asp.net,ajax,asp.net-mvc,Javascript,Jquery,Asp.net,Ajax,Asp.net Mvc,我正在与来自的Jquery时间选择器一起工作 在视图中,我有这个时间选择器控件 $("#startTime").timePicker({ startTime: "09.00", endTime: new Date(0, 0, 0, 19, 0, 0), show24Hours: false, separator: '.', step: 30 }); 如果之前选择了某个特定时间(比如上午11:00)

我正在与来自的Jquery时间选择器一起工作

在视图中,我有这个时间选择器控件

   $("#startTime").timePicker({
        startTime: "09.00", 
        endTime: new Date(0, 0, 0, 19, 0, 0), 
        show24Hours: false,
        separator: '.',
        step: 30
    });
如果之前选择了某个特定时间(比如上午11:00),则该特定选项应被禁用,且不可用于后续选择。在一个MVC控制器中,通过服务层,我得到了一个以前选择的所有时间的“列表”

    public ActionResult DisableTimes(param1, param2)
    {            
        List<string> listTimes = Webservice(param1,param2);
        //getting previously saved times - above line
        return Json(listTimes, JsonRequestBehavior.AllowGet);
    }

如何利用从控制器获得的时间列表“listTimes”来禁用Jquery时间选择器选项

显然,这个datepicker插件不能让你删除他的行为

但我相信您可以从文档中删除该元素

然后重新添加它

使用:

或者每次可以有两个元素,显示/隐藏所需内容或使用:


默认情况下,该插件似乎没有提供该功能。我会稍微更改插件代码中的这些行(它附加到列表中的位)

并且还将timepicker插件调用$(“#startTime”).timepicker放在ajax成功回调中,这样就没有竞争条件,因为ajax回调可能会在插件初始化之后发生


另一种选择是只处理$(“#startTime”)。更改并检查时间是否不允许,并向用户显示错误。

您应该能够通过以下方式从可用选项中删除li:

$(listTimes).each(function() {
    $('.time-picker').find('li:contains("' + this + '")').remove();
});
编辑:

但是,如果在一个页面上有多个时间选择器,则会有点困难。您应该能够添加
:first
选择器,以仅获取第一次选择器

$('.time-picker:first').find('li:contains("' + this + '")').remove();

for(var i = 0; i < times.length; i++) {
      $tpList.append("<li class='"+times[i]+'">" + times[i] + "</li>");
    }`
    "success": function (listTimes) {
         $(listTimes).each(function(i,item){
               $('li.'+item).remove();
         });
        //or may be if you are just getting an array of strings from the webservice then something like this will be enough: $('.'+listTimes.join(',.')).remove();
     }
$(listTimes).each(function() {
    $('.time-picker').find('li:contains("' + this + '")').remove();
});
$('.time-picker:first').find('li:contains("' + this + '")').remove();