试图从 js this 关键字中提取字符串
trying to extract a string from a js this keyword
我正在尝试在加载 link 之前单击 link 后执行 javascript,使用此代码:
$('body').on("click", 'a', function (evt) {
evt.preventDefault();
console.log(this);
$('.content').addClass('hide');
if (this.search("AV") > 0) {
$('#AVheader').addClass('fullwidth');
}
setTimeout(function () {
window.open(this, "_self");
}, 500);
});
我的错误是:
this.search
不是函数并且
window.open(this, "_self");
无效
想把问题提出来,因为我找不到简单的解释,我可能会花半天的时间来弄清楚..
超时函数内的 this
不会引用您的锚元素,而是引用全局 window
对象。您需要保存对该元素的引用,然后在超时回调中使用该引用
$('body').on("click", 'a', function (evt) {
evt.preventDefault();
//save the "this" reference
var that = this;
$('.content').addClass('hide');
if (this.search.search("AV") > 0) {
$('#AVheader').addClass('fullwidth');
}
setTimeout(function () {
window.open(that.search, "_self");
}, 500);
});
此外,锚元素上的 .search
属性 不是函数,它是字符串,您必须根据自己的情况执行 this.search.search("AV")
或 this.href.search("AV")
实际上试图搜索
当您在事件处理程序中时 this
指向被单击的 link。元素没有 search
方法。可能您正在尝试在 link 的某处搜索字符串,也许是内容。
$('body').on("click", 'a', function (evt) {
evt.preventDefault();
console.log(this);
$('.content').addClass('hide');
if (this.innerHTML.search("AV") > 0) {
$('#AVheader').addClass('fullwidth');
}
setTimeout(function () {
window.open(this.href, "_self");
}.bind(this), 500);
});
我正在尝试在加载 link 之前单击 link 后执行 javascript,使用此代码:
$('body').on("click", 'a', function (evt) {
evt.preventDefault();
console.log(this);
$('.content').addClass('hide');
if (this.search("AV") > 0) {
$('#AVheader').addClass('fullwidth');
}
setTimeout(function () {
window.open(this, "_self");
}, 500);
});
我的错误是:
this.search
不是函数并且
window.open(this, "_self");
无效
想把问题提出来,因为我找不到简单的解释,我可能会花半天的时间来弄清楚..
this
不会引用您的锚元素,而是引用全局 window
对象。您需要保存对该元素的引用,然后在超时回调中使用该引用
$('body').on("click", 'a', function (evt) {
evt.preventDefault();
//save the "this" reference
var that = this;
$('.content').addClass('hide');
if (this.search.search("AV") > 0) {
$('#AVheader').addClass('fullwidth');
}
setTimeout(function () {
window.open(that.search, "_self");
}, 500);
});
此外,锚元素上的 .search
属性 不是函数,它是字符串,您必须根据自己的情况执行 this.search.search("AV")
或 this.href.search("AV")
实际上试图搜索
当您在事件处理程序中时 this
指向被单击的 link。元素没有 search
方法。可能您正在尝试在 link 的某处搜索字符串,也许是内容。
$('body').on("click", 'a', function (evt) {
evt.preventDefault();
console.log(this);
$('.content').addClass('hide');
if (this.innerHTML.search("AV") > 0) {
$('#AVheader').addClass('fullwidth');
}
setTimeout(function () {
window.open(this.href, "_self");
}.bind(this), 500);
});