2017-06-21 55 views
-1
$('#hideButton').click(function (e) { 
    var key = $(e.relatedTarget).data('applicationkey'); 
    viewModel.previewApplicationKey(key); 
}); 

我想讓它在我點擊id = hideButton的項目時運行。 我想將relatedTarget.data('applicationkey')添加到名爲 previewApplication的viewModel中。如何在這種特殊情況下點擊jquery事件?

如何更正此代碼?

編輯:好的抱歉缺乏解釋。這是怎麼回事。

<i id="hideCross" class="fa fa-2x fa-times" data-bind="attr: { 'data-applicationKey': application.applicationKey }" data-applicationkey="abc9rbwys"></i> 

如您所見,id = hideCross的這個圖標有data-applicationkey =「abc9rbwys」。

$('#hideCross').click(function (e) { 
    var key = $(e.relatedTarget).data('applicationkey'); 
    viewModel.previewApplicationKey(key); 
}); 

所以這個應該在理論上給我的previewApplicationKey viewModel添加「abc9rbwys」。 您是否看到任何錯誤?我沒有收到錯誤消息,但它只是沒有將關鍵字添加到viewModel。

+3

沒有你的代碼會失敗?單擊上述項目時代碼是否運行? –

+2

錯誤是什麼?我們瞭解您所做的和您的代碼,但錯誤在哪裏以及在哪裏? –

+0

可能是因爲['relatedTarget'](https://api.jquery.com/event.relatedTarget/)僅對'mouseout' /'mouseover'事件有用。你從「點擊」事件中期待什麼元素? – Phil

回答

1

據我瞭解,你只是想讀取被點擊該標籤的屬性,你應該能夠做到這一點簡單地使用$(this)因爲你的事件處理程序連接到具有這種屬性相同的元素:

$('#hideCross').click(function (e) { 
    var key = $(this).data('applicationkey'); 
    viewModel.previewApplicationKey(key); 
}); 

更新:正如@Janar所提到的,您可能使用相同的id代表您的元素,這是不正確的。嘗試使用一些other jQuery selectors將事件處理程序附加到元素,如:

以什麼方式

var viewModel = []; 
 

 
$('i[data-applicationkey]').click(function (e) { 
 
    var key = $(this).data('applicationkey'); 
 
    viewModel.push(key); 
 
    console.log(viewModel); 
 
});
i { 
 
    cursor: pointer; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<i class="fa fa-2x fa-times" data-bind="attr: { 'data-applicationKey': application.applicationKey }" data-applicationkey="abc9rbwys">Click me to add applicationkey</i> 
 

 
<br/> 
 

 
<i class="fa fa-2x fa-times" data-bind="attr: { 'data-applicationKey': application.applicationKey }" data-applicationkey="asdfasfasfd">Click me to add applicationkey</i> 
 

 
<br/> 
 

 
<i class="fa fa-2x fa-times" data-bind="attr: { 'data-applicationKey': application.applicationKey }" data-applicationkey="1345dfsgsdg">Click me to add applicationkey</i>

+0

等一下對不起。其實它仍然沒有添加項目時,我點擊它viewModel。有多個項目。當我點擊第一個時,它工作正常。但是當我嘗試點擊不同的項目時,applicationKey保持不變, – Dukakus17

+0

這些項目是否具有相同的ID?編號應該是唯一的 – Janar

+0

@ user7677413你使用的是與Janar相同的編號嗎?你可以用更多的項目創建一個例子來說明你的問題嗎?看到更新,也許它會幫助你。順便說一句,你用什麼框架?也許有更好的事件處理方式。 –

相關問題