【问题标题】:JQuery concatenating a variable with a wildcardJQuery 用通配符连接变量
【发布时间】:2013-12-11 18:02:35
【问题描述】:

我有很长的 id,所以在某些情况下,当使用 jQuery 操作它们时,创建变量是有意义的。

例如,如果我有:

    if (!$(e.target).is('#some--wickedly-absurd-long-form-id-name-on-this-page, 
#some--wickedly-absurd-long-form-id-name-on-this-page *')) { ...

在上面的代码中,我用通配符命名元素,然后是元素及其下的任何内容。

这并不理想。所以我创建了一个变量:

var showhideWrapper = $("#some--wickedly-absurd-long-form-id-name-on-this-page");

然后我尝试对 id 名称执行与上面相同的操作,但它不起作用。

    if (!$(e.target).is(showhideWrapper, showhideWrapper *)) { ...

我尝试了各种组合

    if (!$(e.target).is(showhideWrapper, showhideWrapper + '*')) { ...

...但我真的不知道如何让它发挥作用。

【问题讨论】:

    标签: jquery variables concatenation string-concatenation


    【解决方案1】:

    你可以这样做:

    if (!showhideWrapper.find(e.target).length) {
    

    (实际上,这并不完全等价,因为它不测试showhideWrapper 本身。但重点是你需要使用遍历函数。你不能用字符串连接对象并获得有用的选择器)。

    但我可能会选择另一种方式,这通常是查看某个事件是否在某个元素内发生的标准方式:

    if(!$(e.target).closest(showhideWrapper).length) {
    

    【讨论】:

    • 非常有趣,感谢这就像一个魅力。我喜欢第二个。
    猜你喜欢
    • 1970-01-01
    • 2015-09-07
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 2023-04-06
    • 2014-02-04
    相关资源
    最近更新 更多