Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 禁用使用jquery选择元素_Javascript_Jquery - Fatal编程技术网

Javascript 禁用使用jquery选择元素

Javascript 禁用使用jquery选择元素,javascript,jquery,Javascript,Jquery,我有一个函数,它使用下面的代码行简单地禁用所有select元素 $('select').prop('disabled', true); 但是,它适用于DOM中已经存在的所有select元素。有几个地方使用javascript/jquery添加select元素。上面的代码行并没有禁用这些元素。解决问题的一种方法是,每次将select元素添加到DOM中时,都调用特定的插件,但这将是大量的工作和需要 有没有更好的方法来禁用所有这些选择元素?您可以尝试以下操作: $('body').on('DOMNo

我有一个函数,它使用下面的代码行简单地禁用所有
select
元素

$('select').prop('disabled', true);
但是,它适用于DOM中已经存在的所有select元素。有几个地方使用javascript/jquery添加
select
元素。上面的代码行并没有禁用这些元素。解决问题的一种方法是,每次将
select
元素添加到DOM中时,都调用特定的插件,但这将是大量的工作和需要


有没有更好的方法来禁用所有这些选择元素?

您可以尝试以下操作:

$('body').on('DOMNodeInserted', 'select', function () {
    $(this).prop('disabled', true);
});
编辑:似乎已弃用domandeinserted。所以你应该使用

<a id="myBtn" href="#">Insert select</a>


<script src="/Scripts/jquery-1.8.2.min.js"></script>
<script src="/Scripts/jquery.validate.min.js"></script>
<script>
    $(function() {        

        $("#myBtn").click(function() {
            $("body").prepend("<select></select>");
        }); 


        $(document).on('DOMNodeInserted', function(e) {
            if (e.target.tagName === "SELECT") {
                console.log("doing stuff!");
            } 
        }); 


    }); 

</script>
如果您需要IE9/10支持,可以查看


<a id="myBtn" href="#">Insert select</a>


<script src="/Scripts/jquery-1.8.2.min.js"></script>
<script src="/Scripts/jquery.validate.min.js"></script>
<script>
    $(function() {        

        $("#myBtn").click(function() {
            $("body").prepend("<select></select>");
        }); 


        $(document).on('DOMNodeInserted', function(e) {
            if (e.target.tagName === "SELECT") {
                console.log("doing stuff!");
            } 
        }); 


    }); 

</script>
$(函数(){ $(“#myBtn”)。单击(函数(){ $(“正文”)。前缀(“”); }); $(文档).on('DOMNodeInserted',函数(e){ 如果(e.target.tagName==“选择”){ log(“做事!”); } }); });
您需要这个

$(document).on('DOMSubtreeModified', 'select', function () {
    $(this).prop('disabled', true);
});

您可以在创建时简单地添加
disabled
属性。同样,我必须遍历整个应用程序才能找到这些情况。我需要一个更好的方法来实现这一点,我不必遍历并查找这些位置,也不必添加禁用的属性。DOMNodeInserted似乎不赞成您的说法,请尝试使用MutationObserver:我已经在查看它,但浏览器兼容性是一个b it问题。我至少需要支持IE 9.DOMNodeInserted已被弃用