2013-11-27 30 views
1

我有這段代碼,但它似乎有錯誤。該錯誤說Uncaught typeError對象#沒有方法'HasScrollBar'是否有代碼有問題?該HasScrollbar方法在功能上的頂部聲明,但它似乎不能找到它,請參閱下面的代碼jquery的錯誤

$.fn.HasScrollBar = function() { 
    //note: clientHeight= height of holder 
    //scrollHeight= we have content till this height 
    var _elm = $(this)[0]; 
    var _hasScrollBar = false; 
    if ((_elm.clientHeight < _elm.scrollHeight) || 
     (_elm.clientWidth < _elm.scrollWidth)) { 
     _hasScrollBar = true; 
    } 
    return _hasScrollBar; 
} 

function ab() { 
    var a = $('td'); 
    $.each(a, function (i, data) { 
     var check = data.HasScrollBar(); 
     if (check == true) { 
      data.addClass('Overflow'); 
      data.attr('title', data.text()); 
     } 
     data.attr('title', data.text()); 
     debugger; 
    }); 

}; 
$('.Test').on('click', function() { 

    ab(); 
}); 
+1

'has scrollbar'!='HasScrollBar' – Stefan

+0

你是什麼意思? – bRaNdOn

+0

這個錯誤不太可能說「沒有方法」有滾動條「」,除非你用'$('foo')['有滾動條']'調用它。請務必複製粘貼錯誤消息*,否則人們會被誤解。 – JJJ

回答

3

$.each()第二個參數(在這種情況下data)是一個DOM元素,而不是一個jQuery對象,它沒有jQuery方法。你需要做的第一包裝在一個jQuery元素:

$.each(a, function (i, data) { 
    var $data = $(data); 
    var check = $data.HasScrollBar(); 
    if (check == true) { 
     $data.addClass('Overflow'); 
     $data.attr('title', $data.text()); 
    } 
    $data.attr('title', $data.text()); 
}); 
+0

謝謝你解決我的問題:) – bRaNdOn

+0

這不會解決使用var a = $('td'); ()(){$ var check = $(this).HasScrollBar(); – mplungjan

+0

當然,這也可以。 – JJJ

1

因爲你不需要櫃檯,你可以在集合

而且無需添加內部和外部的稱號。每運行如果

$('td').each(function() { 
    var $this = $(this); 
    $this.toggleClass('Overflow',$this.HasScrollBar()); 
    $this.attr('title', $this.text()); 
});