为什么这种类型的数据包装在jQuery中不起作用?

时间:2009-06-10 09:03:15

标签: javascript jquery

考虑一下:

var i=$('<img src="/path/to/imgI.png"/>');
var j=$('<img src="/path/to/imgJ.png"/>');
$([i,j]).css('cursor','hand');

但是光标没有改变,我不知道为什么......

当我单独进行时,它可以正常工作。

感谢。

5 个答案:

答案 0 :(得分:2)

当你需要的是这些jQuery对象中的DOM元素时,数组有两个jQuery对象。这将有效:

var i=$('<img src="/path/to/imgI.png"/>')[0]; // <= Notice [0]
var j=$('<img src="/path/to/imgJ.png"/>')[0];
$([i,j]).css('cursor','pointer');

或者,(使用 add()

var i=$('<img src="/path/to/imgI.png"/>');
var j=$('<img src="/path/to/imgJ.png"/>');
$(i).add(j).css('cursor','pointer');

编辑:此外,使用 cursor:pointer; 代替 cursor:hand;

答案 1 :(得分:1)

您确定您的问题不是特定于浏览器的吗?那个特定的css属性很棘手,它要求在IE和Firefox中设置两种不同的属性。

我建议在img标签中使用一个类来指定hand属性。然后,您可以指定两个规则并获得您要查找的内容。

答案 2 :(得分:0)

将选择器放入数组会更有意义:

var i = $('<img src="/path/to/imgI.png"/>').attr('id','i');
var j = $('<img src="/path/to/imgJ.png"/>').attr('id','j');
$( ['#i', '#j'] ).css('cursor','hand');

答案 3 :(得分:0)

正确的游标属性是“指针”而不是“手”,这是除IE 5.5及更低版本之外的任何其他内容不再需要的IE扩展 - 即很少。

答案 4 :(得分:0)

您可以使用jQuery方法将jQuery对象转换为真正的数组,然后合并它们。

var i=$('<img src="/path/to/imgI.png"/>');
var j=$('<img src="/path/to/imgJ.png"/>');
i = $.makeArray(i);
j = $.makeArray(j);
$( $.merge(i,j) ).css('cursor','pointer');

顺便说一下,当你需要一起添加多个jQuery选择时,它也可以工作,

i = $.makeArray( $('div') );
j = $.makeArray( $('a') );
$( $.merge(i,j) ); //this jQuery object holds all divs and a's

你当然也可以这样做:

$('div').add('a');