我有一个必须共同的问题,但我不知道。
如果我向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。我做错了什么?
谢谢!
答案 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);