jquery anchor弹出窗口

时间:2011-09-21 02:33:10

标签: jquery

我正在尝试获取锚点列表,并在弹出窗口中显示锚点引用的文本。像一个弹出的词汇表。我尝试了几种不同的技术,但我无法工作,因为我对此很新。这种技术在firefox中有效,但在Internet Explorer中却没有。任何有关这方面的帮助将不胜感激,或者如果我应该使用不同的方法,请告诉我。

我有我的锚id,如id =“first”,然后它引用的文字为id =“2first”

$("a").click(function(){
    var toGet = $(this).attr('id');
    var holder =$("#2" + toGet);
    var toShow = $(holder).html();
    loadPopup(toShow);
    return false;
});

2 个答案:

答案 0 :(得分:2)

我猜IE不喜欢以数字开头的id属性。来自HTML4 specification

  

IDNAME令牌必须以字母([A-Za-z])开头,后跟任意数量的字母,数字([0-9]),连字符( “ - ”),下划线(“_”),冒号(“:”)和句点(“。”)。

HTML5 has this to say关于id属性:

  

id属性指定其元素的唯一标识符(ID)。该值必须在元素的主子树中的所有ID中唯一,并且必须至少包含一个字符。该值不得包含任何空格字符。

所以HTML5允许你几乎使用任何东西,但HTML4肯定不允许{2}的id,这可能解释了IE的行为。您也可以找到感兴趣的this question

尝试将“2”移到最后:

$("a").click(function(){
    var toGet  = this.id;
    var holder = $("#" + toGet + '2');
    var toShow = holder.html();
    loadPopup(toShow);
    return false;
});

演示:http://jsfiddle.net/ambiguous/ZcT9f/3/

答案 1 :(得分:0)

我知道这已经过时了,希望你现在已经找到了答案,但也许这会帮助其他人。如果您想避免在jQuery中单击它时遵循锚链接,并且您想要执行其他操作,则可以执行以下操作:

$("a").click(function(e){
    e.preventDefault();
    var toGet  = this.id;
    var holder = $("#" + toGet + '2');
    var toShow = holder.html();
    loadPopup(toShow);
    return false;
});

通过将事件e添加到该函数,您现在可以访问该事件并调用e.preventDefault(),这将阻止链接被跟踪,而是执行它后面的代码。< / p>