2012-01-27 98 views
3
<ul class="Buttons"> 
    <li><a href="#" onclick="myFunc(); return false;">Accept</a></li> 
    <li><a href="#" onclick="myFunc(); return false;">Reject</a></li> 
    <li><a href="#" onclick="myFunc(); return false;">On Hold</a></li> 
    <li><a href="#" onclick="myFunc(); return false;">Completed</a></li> 
</ul> 

在我的script.js:文字被点击链接

var myFunc = function() { 
    // I want to get the Text of the link e.g. if the first list item link is 
    // clicked, store "Accept" in a variable. 
}; 

我怎样才能做到这一点?

回答

9

您可以通过当前的链接作为参数传递给函数:

<ul class="Buttons"> 
    <li><a href="#" onclick="myFunc(this); return false;">Accept</a></li> 
    <li><a href="#" onclick="myFunc(this); return false;">Reject</a></li> 
    <li><a href="#" onclick="myFunc(this); return false;">On Hold</a></li> 
    <li><a href="#" onclick="myFunc(this); return false;">Completed</a></li> 
</ul> 

,然后使用innerHTML属性读取里面的文字:

var myFunc = function (link) { 
    alert(link.innerHTML); 
}; 

UPDATE:

我没有注意到,实际上你的问题是用jQuery标记的。在这种情况下,我会建议你悄悄订阅点击处理程序:

<ul class="Buttons"> 
    <li><a href="#">Accept</a></li> 
    <li><a href="#">Reject</a></li> 
    <li><a href="#">On Hold</a></li> 
    <li><a href="#">Completed</a></li> 
</ul> 

,并在一个单独的js文件:

$(function() { 
    $('.Buttons a').click(function() { 
     alert($(this).text()); 
     return false; 
    }); 
}); 

更新2:

有人问如何如果这些锚点是动态生成的,则分配这些点击处理程序。因此,让我们假设你开始了下面的标记:

<ul class="Buttons"></ul> 

,然后当一些事件发生(点击或某事),你添加动态锚:

$('<li/>', { 
    html: $('<a/>', { 
     href: '#', 
     text: 'some text ....', 
     click: myFunc 
    }) 
}).appendTo('.Buttons'); 

,你在什么地方定义myFunc

var myFunc = function() { 
    alert($(this).text()); 
    return false; 
} 
+1

幸运的是,问题标记为jQuery。 :) – Tomalak 2012-01-27 17:54:46

+0

哎呀,打我吧。 – 2012-01-27 17:58:42

+1

@Tomalak,的确,我没有注意到。简直无法相信使用jQuery的人实际上会在他的标记中放入内联onclick处理程序。 – 2012-01-27 18:02:29

1

既然你似乎是使用jQuery ...

$("ul.buttons > li > a").click(function() { 
    alert($(this).text()); 

    myFunc(this); 
    return false; 
}); 

...和删除那些onclick处理程序。 ;)

0
$(function(){ $('.Buttons').click(function(){ alert($(this).html(); }) }) 
0

如果您正在使用jQuery,那么你可以绑定到这样的元素:

//wait for document.ready to fire 
$(function() { 

    //find the links in the `.Button` list and bind a click event handler to them 
    $('.Buttons').find('a').on('click', function() { 

     //alert the text of the clicked element 
     alert($(this).text()); 

     //prevent the normal behavior of the link, also stop the propagation of the event so no other elements fire event handlers for this event 
     return false; 
    }); 
}); 

注意.on()是jQuery的1.7,在这种情况下,新的是一样的使用.bind()http://api.jquery.com/on

你的HTML就那么不需要其中的任何JS:

<ul class="Buttons"> 
    <li><a href="#">Accept</a></li> 
    <li><a href="#">Reject</a></li> 
    <li><a href="#">On Hold</a></li> 
    <li><a href="#">Completed</a></li> 
</ul> 
0

$(this).text()应该为你工作。

1
$('.Buttons li a').click(function(event) { 
     var myVariable = $(this).text(); 
     alert(myVariable); 
     event.preventDefault(); 
    });