我得到了这个表格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上循环,它会更好。
谢谢:)
答案 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]');