我正在编写一些JS函数来处理元素点击并处理JSON响应。我遇到的问题是在点击功能之外引用点击的元素。
HTML模型:
<div class="container">
<div class="link">
<a href="#" onclick="linkify()">Test</a>
</div>
<div class="output">
<textarea class="output-textarea"></textarea>
</div>
</div>
<div class="container">
<div class="link">
<a href="#" onclick="linkify()">Test</a>
</div>
<div class="output">
<textarea class="output-textarea"></textarea>
</div>
</div>
和JS:
// link function
function linkify() {
// save reference to click element
activeElement = $(this);
// make AJAX call
}
// callback function; the parameters of this function
// are defined by an API and cannot be changed
function callback(json) {
$(activeElement).closest('.container').find('.output-textarea').val(json);
}
jsFiddle这里:http://jsfiddle.net/Lqaw05j8/4/
在我的小提琴中,事件会触发并定义所有变量,但我的jQuery DOM遍历并不起作用。
答案 0 :(得分:0)
您需要将this
作为参数传递给函数:
<a href="#" onclick="linkify(this)">Test</a>
function linkify(element) {
// save reference to click element
activeElement = element;
// make AJAX call
}
请注意,使用这样的全局变量不是将上下文传递给回调的最佳方法。如果用户在回调触发之前单击另一个元素,它将更改活动元素。考虑使用context:
$.ajax()
选项来传递上下文,或者使回调函数成为闭包。