使用JavaScript动态获取调用元素(锚)
Getting calling element (anchor) dynamically with JavaScript
如何使用JavaScript获取锚标记的文本?我知道如何通过将ID附加到标签来做到这一点,但我想知道是否有办法使用"this"关键字来做到这一点。
示例HTML片段:
<ul>
<li><a href="javascript:alertText(this);">Link One</a></li>
<li><a href="javascript:alertText(this);">Link Two</a></li>
</ul>
JavaScript函数:
function alertText(callingElement) {
alert(callingElement.text);
}
这不起作用(alert打印出"undefined"),因为" This "关键字似乎指向Window对象,而不是调用该函数的锚。
如果有必要,可以选择使用JQuery
您可以使用.innerHTML
,但要传递this
,您需要使用onclick
属性。
<ul>
<li><a href="#" onclick="alertText(this);">Link One</a></li>
<li><a href="#" onclick="alertText(this);">Link Two</a></li>
</ul>
JS:
function alertText(callingElement) {
alert(callingElement.innerHTML);
}
或者您可以根据用户的浏览器使用.innerText
或.textContent
。
JS:
function alertText(callingElement) {
alert(callingElement.textContent || callingElement.innerText);
}
更新:
啊,等等,它是一个锚元素,所以它确实有一个.text
属性,所以你的原始功能将工作(至少在支持HTML5的浏览器)。
JS:
function alertText(callingElement) {
alert(callingElement.text);
}
将其从href改为onclick:
<ul>
<li><a href="#" onclick="alertText(this)">Link One</a></li>
<li><a href="#" onclick="alertText(this)">Link Two</a></li>
</ul>
和你的JavaScript如下:
function alertText(callingElement) {
alert(callingElement.textContent || callingElement.innerText);
}
示例:http://jsfiddle.net/manseuk/q8Q7A/1/
或内联jQuery ->
<ul>
<li><a href="#" onclick="alert($(this).text())">Link One</a></li>
<li><a href="#" onclick="alert($(this).text())">Link Two</a></li>
</ul>
例子http://jsfiddle.net/manseuk/4uCBf/
您必须在onclick属性中调用该函数,像这样。
<ul>
<li><a href="#" onclick="alertText(this); return false; ">Link One</a></li>
<li><a href="#" onclick="alertText(this); return false; ">Link Two</a></li>
</ul>
你的代码
alertText = function(elem) {
alert(elem.text);
}
查看此处的示例
内联事件处理程序很讨厌。因为您指出jQuery是一个选项,所以我很想这样做:
<ul class="alertList">
<li><a href="#">Link One</a></li>
<li><a href="#">Link Two</a></li>
</ul>
JS:
$(function() { //document ready function
$('.alertList').on('click', 'a', function(event) {
event.preventDefault();
alert($(this).text()); // jQuery
// alert(this.text); // plain JS? Didn't actually test
});
});
相关文章:
- 从不是wicket组件的元素调用wicket
- Javascript 从 html 元素调用函数
- 使用 jQuery 对动态创建的元素调用自定义函数
- 从附加的元素调用javascript
- JS脚本由1个元素调用,而不是由其他3个元素调用
- 对动态添加的元素调用函数
- 如何为适当的元素调用 js
- 如何在 Meteor.js 中对包含在 if 语句中的元素调用函数
- .mousedown()只为每个元素调用一次
- 对类选择的元素数组使用FOR循环,并对每个元素调用函数
- 根据数组的元素调用函数
- 当类被从子元素调用的javascript更改时,CSS转换不起作用
- 为禁用的元素调用函数
- 对动态添加的html元素调用jQuery方法
- 从输入元素调用javascript
- 对同一元素调用Mustache两次失败
- 如何为多个输入元素调用日期范围选择器
- 我如何使那些由于附近的其他元素调用$. fadein()而移动的元素产生动画?
- 对象元素调用函数
- 如何为元素调用click()