2016-11-04 67 views
0

的ON功能這是我的jQuery代碼添加多個ID的:如何使用jQuery

$("body").on("click keypress", "#admin-username",function(){ 
    if($("#admin-username").hasClass("error")){ 
     $("#admin-username").removeClass("error"); 
     setTimeout("$('.message').slideUp('slow');", 50); 
    } 
}); 

我用一個id #admin-username即只有一個ID在上面的jQuery代碼

其中如我前端代碼我有3個輸入框

1)admin-username 2.)admin-email 3.)admin-password

但是我想要實現這樣的

$("body").on("click keypress", "#admin-username, #admin-password, #admin-email",function(){ 
    if($("#admin-username").hasClass("error")){ 
     $("#admin-username").removeClass("error"); 
     setTimeout("$('.message').slideUp('slow');", 50); 
    } 
}); 

但是,如果使用多個ID的這樣便默認情況下它的第一個ID即#admin-username

任何人都可以在這裏我提供一個解決方案唯一的工作?

回答

3

你的選擇是corrent但你需要使用這個 - 內回調函數訪問引發事件

$("body").on("click keypress", "#admin-username, #admin-password, #admin-email",function() 
     { 
      if($(this).hasClass("error")) 
       { 
        $(this).removeClass("error"); 
        setTimeout(function() { 
         $('.message').slideUp('slow'); 
        }, 50); 
       } 
     }); 

而且元素「糾正」了回調函數的setTimeout。

+0

該死的感謝了很多人,完美你的工作代碼。我還添加了更多元素。我有大約70行代碼,這段代碼幾乎把它變成了7行。謝謝:) –

+0

沒問題,記得在問題解決後接受答案。 – Esko

+0

是的,我接受了它:) –

1

使用this變量來選擇當前點擊/的keyPressed元素

$("body").on("click keypress", "#admin-username, #admin-password, #admin-email",function() 
     { 
      if($(this).hasClass("error")) 
       { 
        $(this).removeClass("error"); 
        setTimeout(function(){$('.message').slideUp('slow');}, 50);//here you should select the message div relative to the variable "this" like $(this).parent().find('.message').slideUp('slow'); 
       } 
     }); 
0

您可以指定開始像這樣管理的所有ID。代替文檔,您可以在其中放置元素的容器類/ id。

Demo on fiddle

$(document).on('click keypress', '[id^=admin-]', function() { 
    var $this = $(this); 

    if ($this.hasClass('error')) { 
    // do something 
    } 
}); 
+0

我不需要這個-_- –

+0

@AkshayShrivastav這與接受的答案有何不同?有了這個解決方案(和其他),你可以使用變量來存儲'this'。 –

1

首先,你可以在你的fontend代碼讓說adminInput添加同等級的三個輸入,
秒你可以做這樣的事情,以消除你正在測試,

$("body").on("click keypress", ".adminInput.error",function(e) 
    { var $this = $(this); 

       $this.removeClass("error"); 
       setTimeout(function(){$('.message').slideUp('slow');}, 50); 

    }); 

你你總是可以做這樣的事情

$("#admin-password,#admin-username,#admin-email").click(function(e){ 
var $this = $(this);  
if($this.hasClass('error')){ 
     $this.removeClass("error"); 
     setTimeout(function(){$('.message').slideUp('slow');}, 50); 
    } 
}); 

$("body").on("click keypress", "#admin-username,#admin-password,#admin-email",function(){ 
var $this = $(this); 
if($this.hasClass("error")){ 
    $this.removeClass("error"); 
    setTimeout(function(){$('.message').slideUp('slow');}, 50); 
} 
}); 

我修改了代碼,所以如果你願意,你可以測試錯誤類的任何IDS不只是用戶名

+0

是不是有任何方法來添加多個ID的 –

+0

我編輯了回覆檢查它 –