jQuery prop("disabled") 没有运行

jQuery prop("disabled") is not functioning

我知道这个问题已被多次询问和回答,但 none 的解决方案适用于此示例,即使我知道它们应该如此。也许其他双眼会帮助解决这个问题。

我在设置禁用的代码前后放置了警报 属性,确实设置正确,但该元素仍处于禁用状态。

我摘录了重现此问题所需的代码:jsfiddle

这里有一些代码只是为了满足 SO 规则。

$(function () {
    var dbVendor = $("#database-vendor");
    $("#uses-db").on("change", function (event) {
        event.preventDefault();
        dbVendor.prop("disabled", ($(this).val() == "Yes" ? false : true));
    });
});

#database-vendor已经被包裹,被jQuery移动了,有一个div和一堆JavaScript。更改 select 的禁用 属性 不会导致 jQuery 移动设备响应并更改其 div。

删除 jQuery Mobile 将使代码正常工作。

如果您希望它与 jQuery 移动版一起使用,那么您需要查看 jQuery 移动版 API 以了解如何启用其伪select个元素。

与其搞乱 prop("disabled"),不如做

$dbVendor.selectmenu("enable");

http://jsfiddle.net/r3977gy7/30/

文档

http://api.jquerymobile.com/selectmenu/#method-enable

您正在使用 jquery 移动至极添加 "ui-disabled" class 到元素和他的 parent

$(function () {
   $("#uses-db").on("change", function (event) {
      event.preventDefault();
      if($(this).val() == "Yes"){
         $("#database-vendor").parent().removeClass("ui-disabled");
         $("#database-vendor").removeClass("ui-disabled");
         $("#database-vendor").removeAttr("disabled");//edited
      }
      else{
        $("#database-vendor").parent().addClass("ui-disabled");
        $("#database-vendor").addClass("ui-disabled")
        $("#database-vendor").addAttr("disabled");//edited
      }
   });
});

实际工作代码jsffidle

请查看此解决方案

$(function () {
   var dbVendor = $("#database-vendor");
   $("#uses-db").on("change", function (event) {
        event.preventDefault();
        dbVendor.selectmenu($(this).val() === 'Yes' ? 'enable' : 'disable');
    });
});
dbVendor.selectmenu(($(this).val() == "Yes" ? "enable" : "disable"))