9

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>

a要素には data-code 値があります。

<p class="output" data-value="1"></p>
<p class="output" data-value="2"></p>
<p class="output" data-value="3"></p>

p要素にはデータ値があります。

$(document).ready(function () {
    $(".can-click").click(function () {
    var code = $(this).data("code");
        $("output").each(Display(code));
    });
});

私が欲しいのは、アンカーaをクリックすると、クリックされたアンカーからのデータコードとそれぞれのデータ値を示すpアラートが表示され、コードが添付されて、3つのアラートがポップアップすることです。

function Display(code) {

    var p = $(this);
    var value = p.data("value");
        alert(code + " " + value);
}

jsfiddle のコードへのリンクは次のとおりです: http://jsfiddle.net/mikeu/XFd4n/

4

2 に答える 2

8

次のような関数を呼び出すときは.、クラスセレクターに使用してオブジェクトを渡す必要があります。thisDisplay

$(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);
}
<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>

于 2013-05-20T04:56:04.623 に答える
5

これを試して:-

関数参照を obj.each コールバックに渡す必要があります。obj.each(Display(code))間違っていますobj.each(Display)。ただし、ここでは変数を渡したいので、無名関数内で呼び出すことができます。

デモ

 $(".output").each(function(){ 
                Display(code, this)});
        });

脚本

$(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);
}
于 2013-05-20T05:00:56.093 に答える