我禁用任何输入并使用此代码选择:
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');
});
});
答案 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
表单元素不会在大多数浏览器中引发点击事件,但标签应该没问题。