2015-04-29 46 views
-1

我想檢查某個類中的任何元素是否滿足某些條件。 示例。如果某個類中的任何元素滿足條件,則爲查詢

$(document).on('click','.modalInner_form_nav', function(){ 
    var input = $(this).parents('.modalInner_form').find('.validate_g'); 
    //$(input).each(function(index, element) { 
    if ($(input).val() == ''){ 
     $(input).css('border', '#BB0000 1px solid'); 
     return false; 
    } 
    else { 
     /////////go to next/////////// 
     if ($(this).parents('.modalInner_form').is(':last-child')){ 

     } 
     else { 
     $(this).parents('.modalInner_form').slideUp(); 
     $(this).parents('.modalInner_form').next('.modalInner_form').slideDown(); 
     }   
       //////////// 
    } 
}); 

如果所有輸入字段都是空的,則返回false,但如果此類中的一個不爲空,則返回true。

+1

這段代碼有問題,還是隻是想重構它? –

+0

@RoryMcCrossan有一個問題,如果任何「」輸入「不爲空:」if($(input).val()==''){「,它不會返回false,我不想要如果「validate_g」類中的任何輸入字段爲空 – Relm

+0

@ Relm share'fiddle'鏈接 – ozil

回答

1

的問題是你有一個內在的功能,所以

$(document).on('click', '.modalInner_form_nav', function() { 
    var $form = $(this).parents('.modalInner_form'); 
    var $input = $form.find('.validate_g'); 

    var valid = true; 
    $input.each(function (index, element) { 
     var $this = $(this) 
     if ($this.val() == '') { 
      valid = false; 
      $this.css('border', '#BB0000 1px solid'); 
     } 
    }); 

    if (valid) { 
     if ($form.is(':last-child')) { 
      //do something else 
     } else { 
      $form.slideUp(); 
      $form.next('.modalInner_form').slideDown(); 
     } 

    } 
}); 
+0

So $ input === $(input);? – Relm

+1

@Relm yes ...'var $ this = $(this)' - 用於緩存引用 –

+0

Ohhhhhhhh好吧,看起來不那麼幹淨哈哈; – Relm

0

不能確定你的問題是什麼,但在這裏是爲了提高代碼的方式。

$(this).parents('.modalInner_form')保存在一個變量中,而不是不斷重複這一行代碼。然後你可以用變量替換所有這些方法調用,並只需調用變量上所需的任何函數。

var varName = $(this).parents('.modalInner_form'); 
varName.find('.validate_g'); 
... 
if(varName.is(':last-child')){ 
... 
相關問題