获取链接的href目标并使用Jquery操作具有相同名称的元素

时间:2011-04-04 04:42:56

标签: javascript jquery

这可能很容易,但即使搞清楚我要从哪里开始,我也没有任何运气。 我的想法是我有一个页面,我提供jquery overop ... jquery将在表中查找链接,获取href(或者更具体地说是url的一部分,因为它们链接到同一页面上的元素)然后搜索对于名称的元素,我可以操纵它们。或者,如果你们中的任何人能够想到更好的方法。

换句话说,我希望做的是使用链接的URLS中的信息来查找元素......我希望我已经明确了......>。>

3 个答案:

答案 0 :(得分:1)

使用.attr('href');获取目标。

http://jsfiddle.net/HfqDn/2/

答案 1 :(得分:0)

我猜你想做点什么:

<table>
  <tr><td><a href="/items/1/order">Item 1</a></td></tr>
  <tr><td><a href="/items/2/order">Item 2</a></td></tr>
</table>
<script>
$('table tr').each(function () {
  var id = $('a', this).attr('href').match(/^\/items\/(\d+)\/order$/)[1];
  $(this).append('<td><a href="/items/'+id+'"/edit">Edit</a></td>');
});
</script>

这会在每行附加一个新的表格单元格,并带有编辑相应项目的链接。您可以使用id执行任何操作,因此您可以执行$('#item-'+id).text('replaced!')之类的操作。

如果您不熟悉正则表达式("/items/1/order".match(/^\/items\/(\d+)\/order$/)[1]位),则应read up about them

答案 2 :(得分:0)

这应该按照你指定的方式进行

$().ready(function() {
    // For each link in any table
    $('table a').each(function(i) {
        // determine the anchors name
        var name = $(this).attr('href').match(/#(.*)$/)[1];
        // Select all anchors with name that matches the #<name>
        // We use the selector a[name="<name>"], double quotes are 
        // used to protect from white space characters in links
        var target = $('a[name="' + name +  '"]');
        // manipulate
        target.html('lorem ipsum dolor sit amet');
    });
});

如果您能够修改页面,而不是依赖正则表达式,则可以向包含类名称或锚点所在元素的id的链接插入其他属性。浏览器在向HTML标准中未指定的元素添加额外属性时会给您很多自由。 HTML5甚至允许它们,请参阅Custom attributes - Yea or nay?

基本上,渲染时会忽略自定义属性,但它们仍会添加到DOM中。当它们驻留在DOM中时,您可以根据需要访问和使用它们。