这种语法有什么问题?

var on_a = 0; // declared outside document ready

on_a = $("#sb_results > a:first");

$(on_a + " .sbr_row").addClass('sbr_row_act');

sb_url = $(on_a).attr('href');


以上与这有何不同?

$("#sb_results > a:first .sbr_row").addClass('sbr_row_act');

sb_url = $("#sb_results > a:first").attr('href');


最后一个确实有效,但第一个无效。

最佳答案

因为on_a是一个jQuery对象,所以您要串联它的toString表示形式,这最终看起来像这样:

"[object Object] .sbr_row"


您想要的是:

on_a = $("#sb_results > a:first");
on_a.find(".sbr_row").addClass('sbr_row_act');


...与以下内容相同:

$("#sb_results > a:first .sbr_row").addClass('sbr_row_act');


选择器中a:first.sbr_row之间的空间是descendant-selector,实际上与使用find()方法相同。

08-17 06:01
查看更多