如何根据属性值

时间:2016-06-07 16:58:43

标签: jquery

我得到了这个表格html:

<table id="mytable">
<thead>
<tr role="row">
<th aria-controls="dog"></th>
<th aria-controls="cat"></th>
<th aria-controls="fish"></th>
</tr>
</thead>
</table>

我希望选择属性为&#34; dog&#34;的th。

我试试这个:

$("th").attr("aria-controls"="dog");

什么是上帝的方式呢?
如果我可以避免在所有tr上循环,它会更好。

谢谢:)

2 个答案:

答案 0 :(得分:10)

您可以按属性值等于这样选择元素:

    #!/usr/bin/env python
    from multiprocessing.pool import ThreadPool
    from time import time as timer
    from urllib2 import urlopen
    import requests
    import os

    session = requests.Session()
    rawBody = "\r\n"

    i=0

    k=0
    lines = [line.rstrip() for line in open('input.txt')]

    urls = lines

    def fetch_url(url):
        global k
        try:
            print url 
            return url, None, None
        except Exception as e:
            return url, None, e

    start = timer()
    results = ThreadPool(5).imap_unordered(fetch_url, urls)
    for url, html, error in results:
        if error is None:
            #print ""
            i=i+1
            #print("%r fetched in %ss" % (url, timer() - start))
        else:
            i=i+1
            print error
            #print("error fetching %r: %s" % (url, error))
    #print("Elapsed Time: %s" % (timer() - start,))

有关属性等于选择器的更多信息:https://api.jquery.com/attribute-equals-selector/

作为旁注,var element = $('th[aria-controls="dog"]') 甚至不需要或要测试的属性值。您可以简单地选择具有该属性的所有元素,无论其值如何:

th

使用此选择器的方法有很多种。您甚至可以找到具有该属性的元素,这些元素包含值。

开始于:var element = $('[aria-controls]') 例如:dogggg

结束于:var element = $('[aria-controls|="dog"]')例如:adog

包含:var element = $('[aria-controls$="dog"]')例如:bdogb

不相等:var element = $('[aria-controls*="dog"]')例如:猫

此处有关属性选择器的更多信息:https://api.jquery.com/category/selectors/attribute-selectors/

答案 1 :(得分:2)

您遇到的问题:

$("th").attr("aria-controls"="dog");

主要是语法错误(Uncaught ReferenceError: Invalid left-hand side in assignment);这是因为attr()方法有两种用途,即获取或设置值。

如果你提供一个参数,它就是一个getter,并返回给定属性的值:

$('th').attr('aria-controls');

然后将从aria-controls元素集合返回第一个/唯一元素返回的$('th')属性的值。

属性设置为给定值:

$('th').attr('aria-controls', 'aria-controls new value');

aria-controls属性的属性值设置为提供的'aria-controls new value'值(方法的第二个参数)。

您会注意到这些方法的 都不使用赋值(=)运算符。

要通过其给定属性和属性值查找元素,您需要使用CSS中的attribute-equals([attribute=attribute-value])选择器语法:

$('th[aria-controls=dog]');