【问题标题】:Jquery Selector - Multiple ItemsJquery 选择器 - 多个项目
【发布时间】:2011-10-17 08:04:04
【问题描述】:

假设我有两个 jquery 选择:

var txtA = $('#txtA');
var txtB = $('#txtB');

为了附加相同的事件函数,这是最简洁的方法,还是我缺少明显的语法或 jquery 向导?

$(jQuery.merge(txtA , txtB )).click(function () { alert('hello'); });

谢谢。

【问题讨论】:

  • 如果你已经有了两个选择器变量(也许是因为你已经需要对它们做单独的事情了)那么有更好的方法......
  • @Felix 您的链接是指传递一个字符串并让 jquery 引擎分离查询,我有两个(或更多)强类型对象。
  • @maxp:嗯,不一定清楚你想要/必须如何选择元素。
  • @Felix 100% 清楚 - 它在前三行中。
  • @Alnitak:标题是Jquery Selector - Multiple Items。预先选择元素可能只是 OP 认为 的工作方式。如果他正在做的唯一动作是添加点击事件处理程序,那么使用多重选择器会更好。无论如何......这不是我们必须讨论的事情。

标签: javascript jquery css-selectors


【解决方案1】:

.add() 应该这样做(假设您已经填充了 txtAtxtB 并希望重用这些选择。):

txtA.add(txtB).click(function () {
    alert('hello');
});

给定一个表示一组 DOM 元素的 jQuery 对象,.add() 方法从这些元素和传递给方法的元素的联合构造一个新的 jQuery 对象。 .add() 的参数几乎可以是 $() 接受的任何内容,包括 jQuery 选择器表达式、对 DOM 元素的引用或 HTML sn-p。

【讨论】:

  • +1 用于显示适用于现有基于选择器的变量的唯一正确答案。
【解决方案2】:
$('#txtA, #txtB').click(function () { alert('hello'); });

可能对你有用

【讨论】:

  • 嗨@Pranay Rana,恐怕这行不通,它会尝试在'#txtB'api.jquery.com/jQuery的上下文中选择'#txtA'@我相信'#txtA', '#txtB' 需要在一个字符串 '#txtA, #txtB' 中。如果我错了,请纠正我。
  • @Alex Key - 您可以查看以下信息:api.jquery.com/multiple-selector
  • 嗨@Pranay Rana 现在我很困惑......有人刚刚编辑了你的答案吗?一秒钟前它读取 $('#txtA', '#txtB') 即 2 个参数而不是 $('#txtA, #txtB') (1 个参数)。要么这样,要么我要疯了 :-) 我已经撤消了 -1。
  • 他的回答不正确。 txtA 和 txtB 都是单独的集合。他通过错误的假设回答了这个问题。
  • @Alex Key 你对$('#txtA', '#txtB') 的事情是正确的。我也看到了(但很困惑,没有显示编辑)。
【解决方案3】:

这是我所做的:

$()
    .add(elementOne)
    .add(elementTwo)
    .add(elementThree)
    .click(function() {
        alert('hello');
    });

【讨论】:

    【解决方案4】:

    你可以这样做:

    $("#txtA, #txtB").click(function () { alert('hello'); });
    

    和 CSS 选择器一样,酷啊! :-)

    【讨论】:

    • 不,我有两个强类型集合 '#txtA' 和 '#txtB' 都只是例子。
    • 不用担心@maxp 我猜错了。您可能想用对强类型集合的明确需求来更新您的问题,因为我们中有几个人误读了它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 2011-01-09
    • 1970-01-01
    • 2011-07-14
    • 2011-03-30
    • 2022-10-19
    • 2021-07-05
    相关资源
    最近更新 更多