如何将两个(或多个)jQuery对象列表合并为一个,以对所有这些对象应用操作?

时间:2018-11-04 00:49:27

标签: jquery

我想有两个变量来根据不同的参数以不同的方式访问两个单独的对象。例如:

this.my_div_ = jQuery(".this-div")
this.my_link_ = jQuery(".this-link")

// in some circumstances:
this.my_div_.hide()
this.my_link_.show()

// in other circumstances:
this.my_div_.show()
this.my_link_.show()

// yet other circumstances:
this.my_div_.show()
this.my_link_.hide()

为此,我需要有两个单独的jQuery对象。

现在,我想向两者都添加一个click()句柄,完全相同的点击处理。显然,我可以有一个变量如下:

var handler = e => this.clicked(e)
this.my_div_.click(handler)
this.my_link_.click(handler)

现在我想知道是否会有一些“魔术”可以合并this.my_div_this.my_link_并为两个对象设置一次click()处理程序?

一种无需再次jQuery()个对象即可生成合并的方法。因此等同于此,但使用现有的this.my_div_this.my_link_

this.merged_ = jQuery(".this-div, .this-link")

1 个答案:

答案 0 :(得分:1)

您实际上可以按如下方式使用add()函数:

this.merged_ = this.my_div_.add(this.my_link_)

这意味着,如果要将click()添加到两个对象中,而又不需要merged_变量,则可以将其写在这样的一行中:

this.my_div_.add(this.my_link_).click(e => this.clicked(e))