2012-11-20 22 views
2

我的目標是獲取頁面上的所有HTML,除非複選框未選中並將其發佈到腳本。獲取除頁面以外的所有html

我這樣做是通過複選框的值是一個元素上的類。例如,我的複選框在表格中連續排列,並且...

我想要的所有內容都在#page_content內。由於內容並不知道它是容器 - 也就是說複選框不知道它在表格內部,所以不能包裝它,我認爲在頁面上獲取所有內容並刪除未被選中的元素會更容易。這樣我的標記是正確的。

我正在使用jQuery來做到這一點,但我不知道如何正確處理它。我想到的方式是獲取所有未經檢查的複選框,並將它們的值存儲到變量'unchecked'中。

我有一個outerHTML()函數,可以讓我的元素,它是HTML。

然後我

$('#export').click(function(e) { 
     e.preventDefault(); 
     var uc, unchecked = [], html; 
     $('input:checkbox:not(:checked)').each(function() { 
      unchecked.push("." + $(this).val()); 
     }); 
     uc = unchecked.join(',') + ",.actions,input,button,.btn"; 
     console.log(uc); 
     $('#page_content').find('*').not(uc).each(function() { 
      html += $(this).outerHTML(); 
     }); 
     console.log(html); 
     // $('#export-data').val(html); 
     // console.log($('#export-data').val()); 
    }); 

然後由它結束時我把所有的HTML的此字符串。

更新:工作多一點,我得到的東西,但它是混合標籤。此外,我想剝離輸入和按鈕和其他類,所以我認爲我做的是正確的,但輸出有很多重複。嗯....

回答

0

OK了更清晰,更jQuery的ISH :)

var filter, html, el, unchecked = [], additional, elements; 
$('input:checkbox:not(:checked)').each(function() { 
    unchecked.push("#" + $(this).val()); 
}); 
// We remove checkboxes, cb colums, inputs, etc 
additional = ".actions,input,button,.btn,textarea,.cb"; 
if (unchecked.length) { 
    filter = unchecked.join(',') + "," + additional; 
} else { 
    filter = additional; 
} 
var $elements = $('#page_content').clone(); 
$elements.find(filter).remove(); 
html = $elements.outerHTML(); 
1

嗨,這裏是你如何做到這一點的例子。在這個例子中,它將返回除綠色類之外的所有元素。

代碼已經是複製粘貼,並使用我的方法,我發現運行

<html> 
<head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js" type="text/javascript"></script> 
    <style> 
    DIV{ 
     width:200px; 
     height:200px; 
     display:inline-block; 
    } 
    .black{ 
     background:black; 
    } 
    .yellow{ 
     background:yellow; 
    } 
    .red{ 
     background:red; 
    } 
    .green{ 
     background:green; 
    } 
    </style> 
</head> 
<body> 
    <div id="container"> 
     <div id="1" class="yellow"></div> 
     <div id="2" class="black"></div> 
     <div id="3" class="red"></div> 
     <div id="4" class="green"></div> 
    </div> 
</body> 
<script> 
    $(document).ready(function(){ 
     var elements = $('*'); 
     var filterClass = 'green'; 
     elements = $.grep(elements,function(elementOfArray, indexInArray){ 
      clas = $(elementOfArray).attr('class'); 
      if(typeof(clas) === 'undefined'){ 
       console.log('undef'); 
       return elementOfArray 
      } 
      if(clas.indexOf(filterClass) == -1){ 
       return elementOfArray; 
      } 
     }); 
     console.log(elements); 
    }); 

</script> 

+0

我更新了原來的職位給你更多的想法。我需要剝去一些其他的東西。也許find('*')不是最好用的東西? – stabbie

+0

我剛剛以(*)爲例,你需要做的就是獲取數組中的元素並通過grep方法解析它。我不確定你的HTML,所以我不能幫你與 – Billybonks

+0

我不太清楚如何grep了一些東西 - 輸入,類,textareas等 – stabbie

相關問題