我试图从类中的链接中提取title属性并遇到一些麻烦:
<div class="menu">
<a href="#" title="4242" onclick="cselect()">United States</a>
<a href="#" title="4243" onclick="cselect()">Canada</a>
</div>
这就是我尝试过的:
function cselect(){
var countryID = $(this).attr("title");
location.href = location.href.split("#")[0] + "#" +countryID;
location.reload();
}
谢谢!
答案 0 :(得分:3)
将this
传递给内联处理程序:
function cselect(obj){
var countryID = $(obj).attr("title");
console.log(countryID);
}
<a href="#" title="4242" onclick="cselect(this)">United States</a>
<a href="#" title="4243" onclick="cselect(this)">Canada</a>
答案 1 :(得分:2)
您必须参考点击的元素。一种方法是通过this
,就像tymeJV建议的那样。
但是我会从单独的脚本块设置事件处理程序,只是引用当前元素。对于以下两种解决方案,无需额外的内联onclick
属性。
/* using jQuery */
jQuery( '.menu a' ).on( 'click', function( event ) {
event.preventDefault();
var countryID = jQuery( this ).attr( 'title' ); // <-- !!!
location.href = location.href.split( '#' )[0] + '#' + countryID;
location.reload();
} );
或
/* using plain JS */
var countryAnchors = document.querySelectorAll( '.menu a' );
for( var anchor in countryAnchors ) {
anchor.addEventListener( 'click', function( event ) {
event.preventDefault();
var countryID = this.getAttribute( 'title' ); // <-- !!!
location.href = location.href.split( '#' )[0] + '#' + countryID;
location.reload();
}, false );
}
/* todo: cross-browser test for compatibility on querySelectorAll() and addEventListener() */
答案 2 :(得分:0)
这很简单:
function cselect(){
var countryID = $(this).attr("title");
window.location.hash = countryID
location.reload();
}