1

嗨,我在这里要做的是生成 HTML 中的链接列表作为锚标记:

<a href="/path/100" id="clickme">One link</a>
<a href="/path/101" id="clickme">Sec link</a>
<a href="/path/102" id="clickme">Third link</a>
<a href="/path/103" id="clickme">Fourth link</a>

当有人将鼠标悬停在任何链接上时,我想触发Ajax对特定 URL 的调用。所以我正在hover()为这个 id 注册一个这样的函数:

$('#clickme').hover(function(){
         $.ajax({
                beforeSend : function(jqXHR){
                    //Doin something
                },
                url: //should be the url from the anchor tag that fired this event(how to get it??),
                success: function(data) {
                    //Doin something
                },
                error: function(jqXHR){
                    //Doin something
                }
              });
        });

我的问题是如何将锚标记作为对象或其他东西传递,以便我可以检索任何我想要的东西href、链接的位置等。

对于单个锚标签,它可以工作,但对于 multiplle 则不行。请帮助我。提前致谢。

4

4 回答 4

1

您应该使用类而不是对多个对象使用相同的 id 并this.href为每个对象使用。不允许将相同的 id 分配给一个以上的 html 元素,尽管您可以这样做。

<a href="/path/100" id="clickme" class="someclass">One link</a>
<a href="/path/101" id="clickme" class="someclass">Sec link</a>
<a href="/path/102" id="clickme" class="someclass">Third link</a>
<a href="/path/103" id="clickme" class="someclass">Fourth link</a>


$('.someclass').hover(function(){
     $.ajax({
            beforeSend : function(jqXHR){
                //Doin something
            },
            url: //should be the url from the anchor tag that fired this event(how to get it??),
            success: function(data) {
                //Doin something
            },
            error: function(jqXHR){
                //Doin something
            }
          });
});
于 2013-03-14T12:26:47.860 回答
1

id 应该始终是唯一的(这就是为什么它被称为 ID).. 使其成为类并使用类选择器

html

<a href="/path/100" class="clickme">One link</a>
<a href="/path/101" class="clickme">Sec link</a>
<a href="/path/102" class="clickme">Third link</a>
<a href="/path/103" class="clickme">Fourth link</a>

jQuery

$('.clickme').hover(function(){
     var $this=$(this);
     $.ajax({
            beforeSend : function(jqXHR){
                //Doin something
            },
            url: //should be the url from the anchor tag that fired this event(how to get it??),
            data:{'href':$this.attr('href')}, //this will send '/path/100' as href if u click first link 
            success: function(data) {
                //Doin something
            },
            error: function(jqXHR){
                //Doin something
            }
          });
    });    
于 2013-03-14T12:26:57.603 回答
1

它不起作用,因为 ID 是唯一的,并且 jQuery 只会找到 ID 的第一个实例。

<a href="/path/100" class="clickme">One link</a>
<a href="/path/101" class="clickme">Sec link</a>
<a href="/path/102" class="clickme">Third link</a>
<a href="/path/103" class="clickme">Fourth link</a>

js

$('.clickme').mouseenter(function(){
    var href = $(this).attr('href');
    $.ajax({
         url : href
    });
});
于 2013-03-14T12:27:02.860 回答
1

如果悬停事件处理程序可以使用$(this)inside 来获取 href 属性。其他答案关于使用类而不是 id 是正确的。下面的示例设置为使用“clickme”类而不是 id。

$('.clickme').hover(function(){
     var $this = $(this);
     var theUrl = $this.attr('href');

     $.ajax({
            beforeSend : function(jqXHR){
                //Doin something
            },
            url: theUrl
            success: function(data) {
                //Doin something
            },
            error: function(jqXHR){
                //Doin something
            }
          });
    });
于 2013-03-14T12:32:31.910 回答