jQuery将attr添加到字符串结尾

时间:2010-01-08 06:32:13

标签: jquery

我想将属性href添加到网址的末尾:

这应该很简单。这就是我所拥有的,但我觉得有些不对劲。

$('.delete-code').click(function() {
    var row = $(this).parent().parent();
    $.ajax({
        type: "POST",
        url: "http://website.com/admin/home/deleteCode/"+$(this).attr('href'),
        data: $(this).attr('href'),
        success: function() {
            $(row).hide();
        }
    });
    return false;
});

当我在href

中进行硬编码时,这是有效的

2 个答案:

答案 0 :(得分:2)

您的代码应该有效。问题是网址。有些浏览器需要200 OK来调用成功回调。

尝试更改:

url: "http://website.com/admin/home/deleteCode/"+$(this).attr('href'), 

为:

url: "http://www.flickr.com/search/?q="+$(this).attr('href'),

它应该有用。

另外,您可能想要改变一些小事:

  1. 数据属性是多余的,不适用于开箱即用的漂亮网址。
  2. jQuery有一个$ .get方法来发出GET请求。
  3. nearest('tr')而不是parent()。parent()将使您的代码更具可读性。
  4. href是一个元素属性,因此可以通过DOM直接访问
  5. 所以根据你的需要,这可能是一个更好的选择:

    $('.delete-code').click(function() {
        var tr= $(this).closest('tr')
        $.get("http://www.flickr.com/search/?q=" + this.href, 
           function(){
              tr.hide()
           })
        return false
    })
    
    祝你好运。

答案 1 :(得分:0)

您的代码没有任何问题,它可能只是您的DOM遍历或您正在使用AJAX的方式。

和Julio Protzek是对的,除非你正在使用错误函数或想要创建一个同步的XMLHttpRequest(一个相当罕见的情况),你可以轻易地说

$('.delete-code').click(function() {
    var row = $(this).parent().parent();
    $.get(
        "http://website.com/admin/home/deleteCode/"+$(this).attr('href'),
        {}, // or { data: $(this).attr('href') }, if you needed to send that
        success: function() {
            $(row).hide();
        }
    });
    return false;
});

并记住,除非.delete-code适用于<a class="delete-code">元素,否则它是您尝试从.attr('href')获取的另一个元素。