【问题标题】:Jquery - selector, made of object and string, can it be done?jquery - 选择器,由对象和字符串组成,可以吗?
【发布时间】:2010-12-31 21:33:22
【问题描述】:

假设有一个对象,作为参数传递给函数。参数名称是“obj”。 可以按如下方式串联吗?

$(obj + " .className")......

$(obj + "[name='obj_name'])......

谢谢。

【问题讨论】:

    标签: jquery string object css-selectors concatenation


    【解决方案1】:

    不可以,但是可以使用filter()方法过滤掉对象本身:

    $(obj).filter('.className')...
    $(obj).filter('[name=obj_name]')...
    

    或者,如果您想找到具有这些品质的孩子:

    $(obj).find('.className')...
    $(obj).find('[name=obj_name]')...
    

    或者,find 的替代语法,将obj 作为$() 函数的上下文:

    $('.className', obj)...
    $('[name=obj_name]', obj)...
    

    【讨论】:

      【解决方案2】:
      $(obj.tagName + " .className")
      

      【讨论】:

      • 如果对象是其他对象的子对象,则该方法不起作用。这可能会返回意想不到的结果。
      • 问题不明确,我将其解释为 obj 是 DOM 元素的实例,然后使用选择器查找具有指定类的该类型的任何其他元素。他没有在哪里提到想要找到 obj 的孩子,尽管这可能确实是要求。
      【解决方案3】:

      选择器的第二个参数是上下文:

      $(".className", obj).each(...);
      

      这会将所有匹配项限制为obj。所以假设obj 是对div.parent 的引用:

      <div class="parent">
        <p class="className">I'll be found</p>
      </div>
      <p class="className">I will NOT be found</p>
      

      【讨论】:

      • 这个答案值得更多赞赏。在我看来,这是最干净的方式。
      猜你喜欢
      • 2011-06-08
      • 1970-01-01
      • 2011-11-02
      • 2011-04-23
      • 1970-01-01
      • 2020-10-29
      • 2013-04-21
      • 2018-07-14
      • 1970-01-01
      相关资源
      最近更新 更多