我想禁用正确的超链接

时间:2012-02-02 01:24:42

标签: jquery

这是我在diabing一个超链接的最后一个问题。超链接确实禁用但问题是禁用具有相同类的所有超链接。所有超链接都具有相同的类,如果没有,则它们将不起作用。但我只希望禁用顶部(在html中)的超链接,而不是禁用添加的行(jquery代码)中的超链接。如何区分2以便不是所有超链接都被禁用?

以下是禁用超链接的代码:

 $(".showGrid").unbind('click').click(function (event) {
        event.preventDefault();
        return false;
    })

下面是完整html中的超链接(我希望禁用此超链接):

<table id="optionAndAnswer" class="optionAndAnswer">
<tr>
      <th colspan="2">
        Option and Answer
    </th>
</tr>
<tr class="option">
<td>Option Type:</td>
<td>
<div class="box">
    <input type="text" name="gridValues" class="gridTxt maxRow" readonly="readonly" />
    <a href="#" class="showGrid">[Open Grid]</a>
</div>
</td>
</tr>
</table>

下面是jquery代码中的超链接(不要禁用此超链接):

function insertQuestion(form) {  

var $tr = $("<tr class='optionAndAnswer' align='center'></tr>");
 var $options = $("<td class='option'></td>");

  $('.gridTxt', context).each( function() {

     var $this = $(this);
     var $optionsText = $("<input type='text' class='gridTxtRow maxRow' readonly='readonly' /><span href='#' class='showGrid'>[Open Grid]</span>").attr('name',$this.attr('name'))
                     .attr('value',$this.val())

    $options.append($optionsText);

    });

$tr.append($options);

}

3 个答案:

答案 0 :(得分:0)

您可以使用$(“#new_id”)添加ID并禁用吗?

答案 1 :(得分:0)

你可以用jQuery选择器做很多事情......

$(".box a")将使用'box'类选择所有作为元素后代的锚标记

您可以在锚标记中添加ID,并以此方式抓取它。这是最有效的..

<a id="openGridLink" href="#">[Open Grid]</a>

$("#openGridLink")

会选择(注意Ids在页面上必须是唯一的)

在这里查看更多选择器选项

http://api.jquery.com/category/selectors/

答案 2 :(得分:0)

如果您只是担心确保只有静态HTML获取click处理程序而不是动态添加的处理程序,那么只需添加click处理程序 添加新链接。

// jQuery 1.7.x
$(".showGrid").off('click').on('click', function (event) {
    event.preventDefault();
    // return false;   <-- you PROBABLY don't need this anymore.
});

// add the new links here

如果你不能这样做,那么按位置选择。

$("tr.option:first-child .showGrid").off('click').on('click', function (event) {
    event.preventDefault();
});

如果您无法做到这一点,那么我建议您在动态链接中添加新课程。

var $optionsText = 
    $("<input type='text' class='gridTxtRow maxRow' readonly='readonly' /><span href='#' class='showGrid dynamic'>[Open Grid]</span>")
        .attr('name', $this.attr('name'))
        .attr('value', $this.val());

// then modify your event hook like this:
$(".showGrid:not(.dynamic)").off("click").on("click", function (event) {
    event.preventDefault();
});

在ID上使用类不仅更具语义性,而且在自动生成多个ID时,您不必担心名称冲突。