我编写了以下函数来从SharePoint网站中的html代码中删除不间断的空格(无论何时打开母版页或页面布局,SharePoint设计人员都会使用非破坏空格编写任何代码!最终消费你所有的时间都回去删除它们。)
无论如何,它似乎过长,我对jQuery很陌生,并想知道是否有更简洁的方法来执行相同的任务。
<script type="text/javascript">
$(function(){
$('h1').each( function() {
var $h = $(this);
var html = $h.html();
html = html.replace( ' ', '' );
$h.html( html );
});
});
$(function(){
$('h2').each( function() {
var $h = $(this);
var html = $h.html();
html = html.replace( ' ', '' );
$h.html( html );
});
});
$(function(){
$('h3').each( function() {
var $h = $(this);
var html = $h.html();
html = html.replace( ' ', '' );
$h.html( html );
});
});
$(function(){
$('h4').each( function() {
var $h = $(this);
var html = $h.html();
html = html.replace( ' ', '' );
$h.html( html );
});
});
$(function(){
$('p').each( function() {
var $h = $(this);
var html = $h.html();
html = html.replace( ' ', '' );
$h.html( html );
});
});
</script>
答案 0 :(得分:4)
$(function() {
$('h2, h3, h4, p').each(function() {
var $h = $(this);
var html = $h.html();
html = html.replace( ' ', '' );
$h.html( html );
});
})
答案 1 :(得分:3)
您可以将所有这些组合成一个$(function() { ... });
您没有太多理由将这些调用包装在自己的文档就绪事件处理程序中。
此外,您在许多元素上调用相同的功能,您可以将选择器与,
结合使用,从而导致其他人提出的$('h2,h3,h4,h5').each(function() {....});
更短。
缩短功能体:
var html = $h.html();
html = html.replace(' ', '');
可以在一行上完成:
var html = $h.html().replace(' ', '');
因为你只引用了足够长的时间来调用另一个函数 - 它甚至不需要存储在它自己的变量中:
$h.html($h.html().replace(' ', ''));
或者如果使用jQuery&gt; 1.4,使用新的函数语法:
$h.html(function(index, oldHtml) { return oldHtml.replace(' ', ''); });
当然 - 如果需要,跨多行的方法可以为你提供更多插入调试代码的地方,我通常会在验证它之后手动压缩这类东西。
下一种方法对于这种情况来说有点过分,但可能会更深入地了解jQuery并创建“可重用”代码。
// generic replace in html function - proxies all the arguments to
// .replace()
$.fn.replaceHtml = function() {
var replaceArgs = arguments;
// jQuery 1.4 allows
return this.html(function(idx, oldHtml) {
return oldHtml.replace.apply(oldHtml, replaceArgs);
});
// older versions / another way to write it
// return this.each(function() {
// var $t = $(this), html = $t.html();
// $t.html(html.replace.apply(html, replaceArgs));
// });
};
// single task that uses the replaceHtml function
$.fn.removeNBSP = function() {
return this.replaceHtml(' ', '');
};
$('h1,h2,h3,h4,h5,p').removeNBSP();
答案 2 :(得分:1)
$(function() {
$('h2, h3, h4, p').html(function(){ return $(this).html().replace(" ", "") })
});