2

3 つ以上の td 要素が見つかった場合はテーブルに HTML ブロックを追加しようとしていますが、テーブルの td 要素が 3 つ未満の場合は何もしません。テーブルをループして、各テーブルにある tds の数を確認できました。

私は .filter(); を使ってみました。と $.each() が、クラックできませんでした。

そう: >> if > 3 ステートメントを渡したテーブルにのみ HTML を追加するにはどうすればよいですか?

私はまだ JavaScript と jQuery を学んでいるので、ご容赦ください。

これまでのコードは次のとおりです。

var tbls = $("body").find("table.responsive").length;   
var data = Array();

for(var index = 0; index < tbls; index++){ 
    $("table.responsive").each(function(i, v){
        data[i] = Array();
        $(this).find("td").each(function(ii, vv){
            data[i][ii] = $(this).text();
    }); 
  })
}

data.forEach(function(item) { 
    if(item.length > 3) {

      //here I want to add the HTML, but it is applied to all tables
      $("table.responsive").before("<div style='position:relative;'><span class='MobiScroll'></span></div>");
    return false;          
     } 
});​

ここにデモがあります: http://jsfiddle.net/design4lifeblog/gSPXu/15/

4

3 に答える 3

1

body 要素からトラバースを開始して、このための配列を作成する必要はありません。各関数で TD をカウントできます。

$("table.responsive").​each(function(){
    if ( $('td', this).length > 3) {
       $(this).before("<div style='position:relative;'><span class='MobiScroll'></span></div>");
    }
})​
于 2012-09-28T12:15:35.730 に答える
1
$(function(){
    $("table.responsive").each(function(){
    if ( $(this).find('td').length > 3) {
       $(this).before("<div style='position:relative;'><span class='MobiScroll'></span></div>");
        //alert($(this))
    }
})});

デモ

于 2012-09-28T12:27:01.617 に答える
0
$("table.responsive").each(function(){
  if($(this).find('td').size() > 3)
    $(this).before("<div style='position:relative;'><span class='MobiScroll'></span></div>");
})

http://jsfiddle.net/pKWXZ/1/

于 2012-09-28T12:26:17.983 に答える