2016-12-03 60 views
0

我得到遺漏的類型錯誤:無法讀取屬性未定義的「分裂」(...)遺漏的類型錯誤:無法讀取的不確定(...)財產「分割」

這裏是我的jQuery代碼:

(function($) { 
    "use strict"; 

    $('.tk-input').on('change', function(e){ 
    var $umargin = $(this).parent(); 
    var temp = ''; 
    $umargin.find('.tk-input').each(function(input_index, input){ 
     var margin_property = $(input).attr('data-property'); 
     var input_value = $(input).val(); 
     if(input_value != '') 
     { 
      if(input_value.match(/^[0-9]+$/)) 
       input_value += 'px'; 
      temp += 'margin-'+margin_property+':'+input_value+';'; 

     } 
    }); 
    $umargin.find('.tk-margin-value').val(temp); 
}); 
$('.tk-margin-values').each(function(index, element){ 
    var $umargin = $(this); 
    var tk_margin_value = $umargin.find('.tk-margin-value').val(); 
    console.log($umargin.find('.tk-margin-value').val()); 
    if(tk_margin_value != '') 
    { 

     var vals = tk_margin_value.split(';'); 

     $.each(vals, function(i,vl){ 
      if(vl != '') 
      { 
       var splitval = vl.split(':'); 
       var margin_value = splitval[1]; 
       var param = splitval[0].split('-'); 
       var margin_property = param[1]; 
       $umargin.find('.tk-input').each(function(input_index, input){ 
        var input_margin_property = $(input).attr('data-property'); 
        if(margin_property == input_margin_property) 
         $(input).val(margin_value); 
       }); 
      } 
     }) 
    } 
}); 

})(jQuery); 

這是我的HTML代碼

<div class="tk-margin-values"> 
        <input name="tk_margin_top" data-property="top" class="value-margin-top tk-input '. esc_attr($settings['param_name']) .' '. esc_attr($settings['type']) .'_field" type="text" value="' . esc_attr($top_val) . '"> 
       <input name="tk_margin_right" data-property="right" class="tk-value-margin-right tk-input '. esc_attr($settings['param_name']) .' '. esc_attr($settings['type']) .'_field" type="text" value="' . esc_attr($right_val). '"> 

       <input name="tk_margin_bottom" data-property="bottom" class="tk-value-margin-bottom tk-input '. esc_attr($settings['param_name']) .' '. esc_attr($settings['type']).'_field" type="text" value="'. esc_attr($bottom_val).'"> 

       <input name="tk_margin_left" data-property="left" class="tk-value-margin-left tk-input '. esc_attr($settings['param_name']) .' '. esc_attr($settings['type']).'_field" type="text" value="' . esc_attr($left_val). '">'; 

    //$pieces = array($margin_property, $top_val, $right_val, $bottom_val, $left_val); 
    //$values = implode('||', $pieces); 
    <input type="text" name="'. esc_attr($settings['param_name']) .'" class="tk-margin-value wpb_vc_param_value wpb-input '. esc_attr($settings['param_name']).' '. esc_attr($settings['type']) .'_field" value="'. esc_attr($value) .'" '. $dependency .' />';  

    </div> 

$值在數據庫中保存的價值,目前'margin-top:10px;margin-right:10px;'保存在$值變量。

我不明白爲什麼$ umargin.find('。tk-margin-value').val()是爲什麼在控制檯日誌中未定義,爲什麼會出現此錯誤「Uncaught TypeError:無法讀取屬性'split'未定義的(......)」

+0

有可能$(this)的值誤導你。你有沒有在你的事件處理程序中檢查$(this)的值?它可能不是你認爲這是因爲事件冒泡的因素。它是否會返回您期望的值? – Hendeca

+0

@Hendeca console.log($(this))// result> [div.tk-margin-values context:div.tk-margin-values selector:「」] [div.tk-margin-values context:div。 tk-margin-values選擇器:「」] –

+0

@亨德卡是的,你是對的我找到了2個塊。我還有一個類.tk-margin-value,只是重命名。 –

回答

1

更新

它現在的工作

,或者你可以檢查if ($('.tk-margin-values').length))長像下面

 $(document).ready(function(){ 
      "use strict"; 

      $('.tk-input').on('change', function(e){ 
      var $umargin = $(this).parent(); 
      var temp = ''; 
      $umargin.find('.tk-input').each(function(input_index, input){ 
       var margin_property = $(input).attr('data-property'); 
       var input_value = $(input).val(); 
       if(input_value != '') 
       { 
        if(input_value.match(/^[0-9]+$/)) 
         input_value += 'px'; 
        temp += 'margin-'+margin_property+':'+input_value+';'; 

       } 
      }); 
      $umargin.find('.tk-margin-value').val(temp); 
     }); 

     if ($('.tk-margin-values').length) { 
      $('.tk-margin-values').each(function(index, element){ 
       var $umargin = $(this); 
       var tk_margin_value = $umargin.find('.tk-margin-value').val(); 
       console.log($umargin.find('.tk-margin-value').val()); 
       if(tk_margin_value != '') 
       { 

        var vals = tk_margin_value.split(';'); 

        $.each(vals, function(i,vl){ 
         if(vl != '') 
         { 
          var splitval = vl.split(':'); 
          var margin_value = splitval[1]; 
          var param = splitval[0].split('-'); 
          var margin_property = param[1]; 
          $umargin.find('.tk-input').each(function(input_index, input){ 
           var input_margin_property = $(input).attr('data-property'); 
           if(margin_property == input_margin_property) 
            $(input).val(margin_value); 
          }); 
         } 
        }) 
       } 
      }); 
     } 
     }); 

工作小提琴fiddle link

+0

錯誤$ html沒有被刪除,所有的html塊都被打印出來。 $ html不是問題。我得到了同樣的錯誤,如果($('。tk-margin-values')。length) –

+0

檢查這個小提琴。它的工作現在https://jsfiddle.net/gnanavelr/70vwp8Lp/ – vel

+0

調試事件處理程序'$ this'後,我發現'$ this'在html文件中獲取另一個'.tk-margin-class'。我將班級名稱改爲現在的班級名稱。 –

相關問題