我可以链接这个jQuery吗?

时间:2012-02-10 15:37:25

标签: jquery

是否可以通过将这些jQuery片段链接在一起来缩短它们?对于第二个链,如果可能的话,我想摆脱w类。

$('#content').prepend("<h1 />");
$('#content h1').append( $('#content>p:first strong').html() );
$('#content>p:first strong').parent().remove();

$('font').wrapInner('<p class="w"/>');
$("p.w").unwrap().unwrap();

编辑:让我澄清我的第二个jQuery代码段。我正在清理看起来像这样的旧HTML标记:

<div id="content">
    <p>
        <font>
            <b>Sample Title</b>
            <br>
            More sample text.
        </font>
    </p>
</div>

将其更改为:

<div id="content">
    <p>
        <b>Sample Title</b>
        <br>
        More sample text.
    </p>
</div>

5 个答案:

答案 0 :(得分:2)

为了减少处理,您可以链接,但最好兑现变量(更可重复)。

你可以这样做:

var content = $('#content'),
    firstP = $('#content>p:first strong');

content.prepend("<h1 />").find("h1").append( firstP.html() );
firstP.parent().remove();
祝你好运!

答案 1 :(得分:1)

关于你的代码的问题在于你是针对不同的选择器,这就是为什么你必须修改你的选择器,看看end()将破坏最后一个选择过滤器并修改你的选择器

答案 2 :(得分:1)

我就是这样做的:

var content = $( '#content' )[0];
var para1 = $( content ).children( 'p' )[0];
var text = $( para1 ).children( 'strong' ).text();

$( '<h1>', { text: text }).prependTo( content );
$( para1 ).remove();

  

从jQuery 1.4开始,jQuery()的第二个参数可以接受一个map   由可以传递给的属性的超集组成   .attr()方法。此外,任何事件类型都可以传入,并且   可以调用以下jQuery方法:val,css,html,text,data,   宽度,高度或偏移量。必须在地图中引用名称“class”   因为它是一个JavaScript保留字,并且不能使用“className”   因为它不是正确的属性名称。

来自文档:http://api.jquery.com/jQuery/#jQuery2

因此,您可以将对象文字作为第二个参数传递。该对象文字“初始化”新创建的DOM元素(在我们的例子中是H1元素)。

答案 3 :(得分:0)

我认为您不会通过简单地链接代码来减少处理时间。 Rafael.IT答案很好,但我认为它不会有助于提高代码性能。

答案 4 :(得分:0)

试试这个。

$('#content')
.prepend("<h1 />");
.find('h1').append( $('#content>p:first strong').html() )
.end()
.find('>p:first strong').parent().remove();

$('font').wrapInner('<p class="w"/>');
$("p.w").unwrap().unwrap();

.end()结束当前链中最近的过滤操作,并将匹配元素集返回到先前的状态。