如何在执行 onClick 函数时将 span 的值或文本内容传递给 jQuery 函数?
我尝试了一些类似以下的方法,但没有运气:
<span onClick="sceSelect()">Next</span>
我正在尝试传递值“Next”,但无法传递。我不能使用 getElementByID,因为跨度内的内容是动态生成的,并且从一个数组中放入 html 中,该数组中将有多个不同的值作为单独的放入 html 中,但我需要每个都激活一个函数并传递它对它的价值 onClick。
如何在执行 onClick 函数时将 span 的值或文本内容传递给 jQuery 函数?
我尝试了一些类似以下的方法,但没有运气:
<span onClick="sceSelect()">Next</span>
我正在尝试传递值“Next”,但无法传递。我不能使用 getElementByID,因为跨度内的内容是动态生成的,并且从一个数组中放入 html 中,该数组中将有多个不同的值作为单独的放入 html 中,但我需要每个都激活一个函数并传递它对它的价值 onClick。
如果您必须使用内联事件处理:
<span onclick="sceSelect((this.textContent || this.innerText))">Next</span>
顺便说一句,您不需要驼峰式 ( onClick
)onclick
属性。
当然,这假设您的函数需要传递一个参数,例如:
function sceSelect(elementText){
}
当然,您也可以在函数调用中传递节点本身(坦率地说,这更有意义)(正如bfaveretto所说,在其他地方)。
然而,我不相信有任何理由在 jQuery 中使用内联事件处理,使用:
$('span').click(function(){
sceSelect(this);
// or:
sceSelect($(this));
// or:
sceSelect($(this).text());
});
对我来说更有意义(尽管您的用例可能与我想象的可能(或应该)完全不同)。
顺便说一句,避免内联事件处理的一种方法getElementById()
是使用:
function sceSelect() {
console.log(this.textContent || this.innerText);
}
var spans = document.getElementsByTagName('span');
for (var i = 0, len = spans.length; i < len; i++) {
spans[i].onclick = sceSelect;
}
在函数的范围内,sceSelect()
对象this
/节点是span
您(或用户)单击的元素。
最简单的方法是传递对元素本身的引用:
<span onClick="sceSelect(this)">Next</span>
然后从函数中访问您需要的任何属性。
不过,应尽可能避免使用内联事件处理程序。如果您使用 JavaScript 创建添加事件侦听器,则触发事件的元素将this
在侦听器内部可用:
var span = document.getElementById('someSpan');
span.addEventListener('click', function(e) {
// here, 'this' will be your span
alert(this.textContent || this.innerText)
});