单击禁用标记时发出警报

时间:2012-10-08 15:52:15

标签: jquery

我禁用任何输入并使用此代码选择:

 var elements = ['#lbl1' ,'#lbl2','#lbl3','#lbl4','#lbl5','#lbl6','#lbl7'];
 jQuery.each(elements, function(element) {
     $(elements[element]).attr('disabled', true);   
 });

现在,我想如果用户点击禁用标签提醒用户:

var elements = ['#lbl1' ,'#lbl2','#lbl3','#lbl4','#lbl5','#lbl6','#lbl7'];
 jQuery.each(elements, function(element) {
   $(elements[element]).click(function{
   if ( $(elements[element]).attr() == 'disabled')  alert('DISABLED');  
   });
 });

3 个答案:

答案 0 :(得分:1)

您缺少点击功能的打开/关闭括号:

   $(elements[element]).click(function() {

为什么不组合这两个功能?

var elements = ['#lbl1' ,'#lbl2','#lbl3','#lbl4','#lbl5','#lbl6','#lbl7'];
 jQuery.each(elements, function(element) {
     $(elements[element]).attr('disabled', true).click(function(){
        alert('DISABLED');
     });
 });

因为您将bind-to-click-function链接到set-attribute函数的末尾,所以您不需要多次运行每个循环。

答案 1 :(得分:0)

我认为点击等鼠标事件不适用于已禁用的元素

如果你想要代码,可以用这种方式编写......但它不会触发禁用的元素。

检查 true 而不是禁用..

  $(function() {
    $('[id^="lbl"]').attr('disabled', true);

    $('[id^="lbl"]').on('click', function(){
        if( $(this).attr('disabled') === true){
              alert('DISABLED');
          }
    });
  });

您无需在$ .each循环中分配click事件..

您可以使用 id ^ = lbl 直接指定事件,检查id以lbl开头的所有元素。

答案 2 :(得分:0)

如果你在要禁用的所有元素上放置一个类,这将会容易得多。然后你可以把它变成一个单行。

$(".disabled-element").prop("disabled", true);

要检查标签是否已禁用,您也不需要循环:

$(".disabled-element").click(function() {
    if ($(this).prop("disabled")) {
        alert("disabled");
    }
});

请注意,disabled表单元素不会在大多数浏览器中引发点击事件,但标签应该没问题。