这就是我现在所拥有的,它不起作用:
<script>
jQuery(function($){
$(document).ready(function(){
$("a").attr('onclick', 'return goog_report_conversion(' + this.attr('href') + ')');
});
});
</script>
我是否错误地使用了'this'关键字?
答案 0 :(得分:4)
如果您不打算在元素中分配onclick
内联,我认为没有理由不使用标准事件处理程序。您可以详细了解这些好处here。
我建议:
$("a").click(function() {
var href = $(this).attr("href");
return goog_report_conversion(href);
});
此外,您的前两行代码执行相同的任务,因此您不需要两者。 (More info here)
jQuery(function($){ ... });
// OR
$(document).ready(function() { ... });
如果你想知道为什么你的工作不起作用:
attr()
没有自己的this
参数。
(向上追踪,您使用它的上下文实际上会引用document
,因为范围由$(document).ready( ... )
定义
如果 以这种方式执行,您可能需要修改goog_report_conversion()
函数以接受所点击元素的参数,而不是href
。您的this
将包含在字符串中,而不是连接在一起。使用传递的元素,您将获取href
,类似于上面示例中的操作。
function goog_report_conversion(clicked_element) {
var href = $(clicked_element).attr("href");
//do something with href
});
$("a").attr("onclick", "return goog_report_conversion(this);");
话虽如此,请不要这样做。