0

私は JavaScript/jQuery が苦手で、非常に基本的なタスクで多くの問題を抱えています。クリックすると、imgその中にある親のIDが表示divされます。

これはマークアップです:

<div id="client-1">
    <img src="~/Content/plus.ico" alt="plus" onclick="ButtonExpandClick()" />
</div>

そして、ここにJavaScriptがあります:

<script type="text/javascript">
    function ButtonExpandClick() {
        alert($(this).parent().attr("id"));
    }
</script>

div画像をクリックすると、「未定義」というアラートが表示されますが、ページを調べると、ID が「client-1」であることがはっきりとわかります。ここで単純なものが欠けているに違いありません。関数.closestに渡すだけでなく、使用も試みましたが、うまくいきませんでした。this助けてくれてありがとう!

4

6 に答える 6

3

onclickイベントには属性を使用しないでください。jQueryを使用している場合は、イベントを「適切に」バインドしてください。

画像にクラスを追加します。

<img src="~/Content/plus.ico" alt="plus" class="icon" />

次に、イベントをバインドします。

$(function(){
    $('.icon').click(function(){
        alert($(this).parent().attr("id"));
    });
});
于 2013-07-29T20:37:35.567 に答える
1

インラインで行うのではなく、jQuery を使用してクリック イベントをフックするとthis、自動的に渡されます。

画像に を与えるidか、別のセレクターを見つける必要があることに注意してください。

jQuery(document).ready(function() {
    jQuery("#myImg").click(ButtonExpandClick);
});
于 2013-07-29T20:37:33.210 に答える
0

さらに簡単に、バインディングでこれを試すことができます。

<div id="client-1">
  <img src="~/Content/plus.ico" alt="plus"  />
</div>

<script>
  $(function() {
    $('img').on('click', function(){
      // Two ways to do the same thing
      alert(this.parentNode.id);
      alert($(this).parent()[0].id);
    });
  });
</script>
于 2013-07-29T20:52:25.157 に答える
0

渡す必要があります this

onclick="ButtonExpandClick(this)"

JS

function ButtonExpandClick(elem) {
   alert($(elem).parent().attr("id"));
}

また、インライン イベントを宣言することもお勧めできません。JavaScript を使用してイベントを直接添付します。

<script>

   $(function() {
       $('#client-1 img').click(function() {
           alert($(this).parent().attr("id"));
       });
   });

</script>
于 2013-07-29T20:36:00.843 に答える
0

jquery.click を使用するか、要素を関数で送信する必要があります。sendme(これ)のように。

于 2013-07-29T20:36:48.940 に答える
0

次のようなものを使用できます。

$(function() {
    $('img').on('click', function(e) {
            var id = this.parentNode.id; //Using javascript to access id is faster.
        alert(id);
    });
});

Jsfiddleでの作業例

この画像をコンテナー内に配置することをお勧めします。これをに変更します。その方がパフォーマンスに優れています。

$(関数() {

   var images = $('#container').find('img');
   images.on('click', function(e) {
        var id = this.parentNode.id; //Using javascript to access id is faster.
        alert(id);
    });

});
于 2013-07-29T20:43:57.227 に答える