我试图使用jQuery选择中找到的每个对象调用一个函数
<a href="#" class="can-click" data-code="a">a</a>
<a href="#" class="can-click" data-code="b">b</a>
<a href="#" class="can-click" data-code="c">c</a>
<a href="#" class="can-click" data-code="d">d</a>
Run Code Online (Sandbox Code Playgroud)
每个a
元素都有一个数据代码值:
<p class="output" data-value="1"></p>
<p class="output" data-value="2"></p>
<p class="output" data-value="3"></p>
Run Code Online (Sandbox Code Playgroud)
每个p
元素都有一个数据值:
$(document).ready(function () {
$(".can-click").click(function () {
var code = $(this).data("code");
$("output").each(Display(code));
});
});
Run Code Online (Sandbox Code Playgroud)
我想要的是,当你点击锚点时,a
你会收到一个警告,显示点击锚点的数据代码和每个数据的数据值p
,附带代码我想要弹出3个警报.
function Display(code) {
var p = $(this);
var value = p.data("value");
alert(code + " " + value);
}
Run Code Online (Sandbox Code Playgroud)
这是jsfiddle中代码的链接:http://jsfiddle.net/mikeu/XFd4n/
您必须使用.
类选择器并this
在调用Display
函数时传递对象,
$(document).ready(function() {
$(".can-click").click(function(e) {
e.preventDefault();
var code = $(this).data("code");
$(".output").each(function() { // use . for class selectors
Display(code, this); // pass this from here
});
});
});
function Display(code, ths) { // ths = this, current output element
var p = $(ths), // use ths instead of this
value = p.data("value");
console.log(code + " " + value);
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#" class="can-click" data-code="a">a</a>
<a href="#" class="can-click" data-code="b">b</a>
<a href="#" class="can-click" data-code="c">c</a>
<a href="#" class="can-click" data-code="d">d</a>
<p class="output" data-value="1"></p>
<p class="output" data-value="2"></p>
<p class="output" data-value="3"></p>
Run Code Online (Sandbox Code Playgroud)
尝试这个:-
您需要将函数引用传递给 obj.each 回调。obj.each(Display(code))
错了,应该是obj.each(Display)
;但既然你想在这里传递变量,你可以在匿名函数中调用它。
$(".output").each(function(){
Display(code, this)});
});
Run Code Online (Sandbox Code Playgroud)
$(document).ready(function () {
$(".can-click").click(function () {
var code = $(this).data("code");
$(".output").each(function(){
Display(code, this)});
});
});
function Display(code,$this) {
var p = $($this);
var value = p.data("value");
alert(code + " " + value);
}
Run Code Online (Sandbox Code Playgroud)