jQuery:将新对象附加到DIV并对该新对象进行操作

时间:2010-11-09 23:14:45

标签: jquery

我有一个必须共同的问题,但我不知道。

如果我向DIV添加某些内容(比如说SPAN),我该怎样才能同时对新的SPAN进行操作?

function makeRotatable($clone) {
    $($clone).before('<span style="height:200px;"></span>').slider({
            orientation: "vertical",
            range: "min",
            min: 0,
            max: 100,
            value: 60,
            slide: function( event, ui ) {
                $( "#amount" ).val( ui.value );
            }
        });

}

我想要做的是对新附加的SPAN采取行动。但滑块正在代替$ clone。我做错了什么?

谢谢!

4 个答案:

答案 0 :(得分:5)

将它们交换使用insertBefore()

$('<span style="height:200px;"></span>').insertBefore($clone).slider({
    orientation: "vertical",
    range: "min",
    min: 0,
    max: 100,
    value: 60,
    slide: function(event, ui) {
        $("#amount").val(ui.value);
    }
});

答案 1 :(得分:4)

使用.insertBefore()代替,如下所示:

function makeRotatable($clone) {
  $('<span style="height:200px;" />').slider({
        orientation: "vertical",
        range: "min",
        min: 0,
        max: 100,
        value: 60,
        slide: function( event, ui ) {
            $( "#amount" ).val( ui.value );
        }
  }).insertBefore($clone);
}

.insertBefore()也会在它之前返回元素,但在这种情况下它将是跨度,这就是你所追求的。另请注意,在 .slider()之后调用会更有效,因为插件在插入元素时会更快地处理文档片段。

答案 2 :(得分:3)

before函数返回您案例中的$($clone)。这就是jQuery链接的工作方式。要获得所需的效果,请在新附加的SPAN上链接:

$('<span style="height:200px;"></span>').insertBefore($($clone)).slider(...);

答案 3 :(得分:1)

我会尝试:

  var span = $('<span style="height:200px;"></span>').slider({
                orientation: "vertical",
                range: "min",
                min: 0,
                max: 100,
                value: 60,
                slide: function( event, ui ) {
                    $( "#amount" ).val( ui.value );
                }
            }); 
    $($clone).before(span);