2016-09-07 3 views
0

私がしたいのは、特定のDOM要素のセットに対してクリックイベントを設定することです。クリックした要素を保存して別のオブジェクトからアクセスする

クリックした要素を覚えておきたいので、後で情報を取得する必要があるかもしれません。

可能であれば、別のJSオブジェクトからアクセスできるようにしたいと考えています。以下は

<ul> 
    <li>Item 1</li> 
    <li>Item 2</li> 
    <li>Item 3</li> 
</ul> 
<button> 
     Which have you clicked on? 
</button> 

<script> 
var listItem = { 
    elementHandle: $('li'), 
    instanceClicked: '', 
    bindEventHandlers: function(){ 
     $(this.elementHandle).click(this.alertTheContent); 
    }, 
    alertTheContent: function(){ 
     this.instanceClicked = $(this); 
     alert(this.instanceClicked.html()); 
    } 
} 

var button = { 
    elementHandle: $('button'), 
    bindEventHandlers: function(){ 
     $(this.elementHandle).click(this.showListItemClicked); 
    }, 
    showListItemClicked: function(){ 
     console.log(listItem.instanceClicked); 
    } 
} 

listItem.bindEventHandlers(); 
button.bindEventHandlers(); 
</script> 

私は近いだけどshowClickedItem()関数のコンソールログは「」を返していると思う...私はこれまで持っているものです。最初にlistItemオブジェクトを作成したときと同じです。

見つけてくださいここでフィドルthisliないlistItem

alertTheContent: function(){ 
    listItem.instanceClicked = $(this); 
    alert(listItem.instanceClicked.html()); 
} 

DEMOすなわちクリックハンドラを起動し、現在の要素のコンテキストを指すあなたはalertTheContent機能にlistItem代わりのthisを使用する必要がhttps://jsfiddle.net/rbfaxw12/

+0

Onclickなぜ要素にクラスを追加しないでください。ですから、そのクラスを使用することによって、その特定のクリックされたDOMの価値を得ることができます。 – Samir

答えて

0

の代わりにuse listItem.instanceClicked = $(this);

関連する問題