如何通过在jquery中传递选择器来访问元素?
我想通过传递如何通过在jquery中传递选择器来访问元素?,jquery,selector,Jquery,Selector,我想通过传递lqjmje5plsqnl258canal0lmb0来获取#chocolate_type的内容!323 作为jQuery的参数。我试过: $('#'+id).find('td:first').html(); 但它不起作用。以下是标记: <tr bgcolor="#CCCCCC" align="center" id="lqjmje5plsqnl258canal0lmb0!323"> <td id="chocolate_type">Chocolate H
lqjmje5plsqnl258canal0lmb0来获取#chocolate_type
的内容!323
作为jQuery的参数。我试过:
$('#'+id).find('td:first').html();
但它不起作用。以下是标记:
<tr bgcolor="#CCCCCC" align="center" id="lqjmje5plsqnl258canal0lmb0!323">
<td id="chocolate_type">Chocolate Hearts</td>
<td>2.79</td>
</tr>
巧克力心
2.79
提前感谢您的帮助。请尝试类似以下内容:
$('tr[id='+id+']')。html()
。这对我有用。这只是样品。在您的例子中,它将变成$('tr[id='+id+']')。find('td:first')。html()
更新:
$('#'+id)
是在id位于其他变量中时查找元素的正确方法。但是在您的情况下代码>导致问题并阻止其工作。我怀疑lqjmje5plsqnl258canal0lmb0!323对于id来说似乎不是一个好值。id值不应以数字开头,并且应避免使用特殊字符作为id值:
$('#lqjmje5plsqnl258canal0lmb0!323 #chocolate_type').html();
您也可以通过id直接获取内容:
$('#chocolate_type').html();
您的代码看起来正常,但无法使用代码>ID中的字符。我想这可能是您的问题
您可以使用$('#'+id).查找('td:first')
,$('td:first','#'+id)
,$('#'+id+'td:first')或任何您喜欢的方法。我相信在某个地方有一个性能比较,我会看看是否能找到它
编辑:这里有一篇关于jQuery性能的非常有趣的文章,它说find()
优于上下文:。所以,你做得对。只需更改id:)最好以这种方式编写代码
$('tr#'+id+' td:first').html();
由于感叹号,选择器失败。如果您正在使用Firefox,请检查您的控制台,您会看到如下错误:
错误:未捕获异常:语法错误,无法识别的表达式:!323
如果可以,请从ID中删除感叹号。可在此处找到ID允许的字符:
使用$('tr[id='+id+']')
也可以,但您确实不应该依赖于此,因为功能可能会因为未定义的行为而更改。您的id包含无效字符。来自w3c:
ID和名称标记必须以字母([a-Za-z])开头,后面可以是任意数量的字母、数字([0-9])、连字符(“-”)、下划线(“)、冒号(:”)和句点(“.”)
更多信息我在构建搜索表单时遇到了同样的问题,因为我在每次提交后都使用搜索上下文构建表单来重建表单。例如,搜索“!\/\”将生成一些无效ID
对于许多简单类型的无效字符(特别是当您自动生成ID并且无法严格控制输入时),请故障切换到JavaScript:
document.getElementById(yourElementId)
我不确定使用tr[id='+id+']
是否优化为$('#'+id)
,但肯定不是更好$(“#”+id)
使用本机document.getElementById()
,这几乎是在DOM中查找元素的最快方法(请参见此处的示例:)。thnx很多…..!”问题是,将某个页面链接到未引用的信息(尽管事实证明是从W3C规范中转述出来的)似乎不如。然而是d邪恶…你的guysI被移除了但以数字开头的id会出现什么问题呢?