如何使用jQuery仅禁用JSP上的某些链接

时间:2011-09-09 13:29:14

标签: jquery

我一直在JSP上使用循环来调用三个不同的Struts操作但是打印相同的数据参数:

<a href="customize_business?method=add&listingId=<%=biz.getListingId()%>&bid=<%=bid `%>&source=<%=biz.getSource()%>" class="ajax-link-add" id="addBus"><img` `src="../images/green-tick.png" /></a>

我的jQuery是:

$(function() {
    $('.ajax-link-add').click( function() {
        alert("in jquery fro add");
        $.get( $(this).attr('href'), function(msg) {
            if (msg!=null) {
                alert($.getAnchorValue('source', $('#addBus').attr('href')));
                $('#addBus').fadeTo('slow', 0.5, function() {
                    $('#addBus').removeAttr("href");
                });
            }
        });
        return false; 
    });
});

因此输出将是:

    CitySearch
    Mexican Village Restaurant            'a link to save in db' 'a link to delete from db'
    Yelp
    Mexican Village Restaurant            'a link to save in db' 'a link to delete from db'
    YahooLocal
    Mexican Village Restaurant            'a link to save in db' 'a link to delete from db'

用户点击以在CitySearch中保存商家名称后,Ciysearch的所有其他记录都应显示为灰色并禁用链接。但是Yelp和YahooLocal的所有记录和链接都应该是活动的,用户可以从中选择一个。

即使用户点击任何一个来源中的任何一个链接,我当前的jQuery也会禁用所有记录(Yelp,Citysearch,yahoolocal)和所有链接。我需要他在所有3个来源中只选择一个企业。

我应该如何更改我的jQuery?感谢。

@Shadow:谢谢你。它起作用,只有一个循环中的链接才能被禁用。每个链接都有一个'check'和'cross'来添加和删除数据库中的业务。用户在特定源上检查业务后,使用上述代码禁用该源的所有添加/删除链接。但我希望只保留一个删除链接,以便用户能够删除所选业务。

<a href="customize_business?method=add&listingId=<%=biz.getListingId()%>&bid=<%=bid `%>&source=<%=biz.getSource()%>" class="ajax-link-add" id="addBus" source="`<%=biz.getSource()%>"><img src="../images/green-tick.png" /></a> <a href="customize_business?method=delete&listingId=<%=biz.getListingId()%>&bid=<%=‌​bid %>&source=<%=biz.getSource()%>" class="ajax-link-delete" id="deleteBus" source="<%=biz.getSource()%>"><img src="../images/red-cross.png" /></a>`

Jquery是:

$(function() {
   $('.ajax-link-add').click( function() {

    var oLink = $(this);
         $.get( $(this).attr('href'), function(msg) {
             if (msg != null) {

                alert($.getAnchorValue('source', oLink.attr('href')));
                $("a[source='" +  oLink.attr("source") + "']").fadeTo('slow', 0.5, function() {
                $("a[source='" +  oLink.attr("source") + "']").removeAttr("href");

            });
          }
       });
   return false; 
   });
});

$(function() {
   $('.ajax-link-delete').click( function() {
    alert("in jquery fro add");
    var oLink = $(this);
         $.get( $(this).attr('href'), function(msg) {
             if (msg != null) {
                alert("in here 1 ");
                alert($.getAnchorValue('source', oLink.attr('href')));
                $("a[source='" +  oLink.attr("source") + "']").fadeTo('slow', 0.5, function() {
                $("a[source='" +  oLink.attr("source") + "']").removeAttr("href");
            });
          }
       });
   return false; 
   });
});
是的....所以,如果我有

Source: Citysearch 
Mexican Village Restaurant              add  delete
Mexican Town Restaurant                 add  delete
Chinese Restaurant                      add  delete

Source: Yelp
Mexican Village Restaurant              add  delete
Mexican Town Restaurant                 add  delete
Chinese Restaurant                      add  delete

用户点击CitySearch:墨西哥乡村餐厅的“添加”后,只有CitySearch的所有其他记录都会显示为灰色,其添加/删除链接已禁用。只有“删除”CitySearch的链接:墨西哥乡村餐厅应该是活动的,并且允许用户从数据库中删除该记录并选择其他一些业务。当用户选择其他业务时,应该发生同样的事情。其他业务已禁用并显示为灰色,但该特定选定业务的删除链接应处于活动状态。

同时,Yelp和其他来源上的所有添加/删除链接都应该是活动的。

1 个答案:

答案 0 :(得分:0)

您只需要引用活动元素:

alert("in jquery fro add");
var oLink = $(this);
$.get( $(this).attr('href'), function(msg) {
    if (msg != null) {
        alert($.getAnchorValue('source', oLink.attr('href')));
        oLink.fadeTo('slow', 0.5, function() {
            oLink.removeAttr("href");
        });
    }
});
return false;

修改:要仅停用某些链接组,请先将source添加为自定义属性:

<a href="customize_business?method=add&listingId=<%=biz.getListingId()%>&bid=<%=bid `%>&source=<%=biz.getSource()%>" class="ajax-link-add" id="addBus" source="<%=biz.getSource()%>">

然后将代码更改为:

oLink.fadeTo('slow', 0.5, function() {
    $("a[source='" +  oLink.attr("source") + "']").removeAttr("href");
});