如何在这个特定情况下单击时运行jquery事件?

时间:2017-06-21 06:48:20

标签: javascript jquery

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

当我点击id = hideButton的项目时,我想让它运行。 我想将relatedTarget.data('applicationkey')添加到一个名为的viewModel previewApplication。

如何更正此代码?

编辑:好的抱歉没有解释。这是正在发生的事情。

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

所以这个shoud在理论上将“abc9rbwys”添加到我的previewApplicationKey viewModel中。 你看到有什么错误吗?我没有收到错误消息,但它只是没有将密钥添加到viewModel。

1 个答案:

答案 0 :(得分:1)

据我所知,你只想阅读被点击的标签的属性,你应该能够简单地使用$(this)这样做,因为你将事件处理程序附加到具有此属性的同一元素:

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

更新:正如@Janar所提到的,您可能对元素使用相同的ID,这是不正确的。尝试使用一些other jQuery selectors将事件处理程序附加到您的元素,例如:

&#13;
&#13;
var viewModel = [];

$('i[data-applicationkey]').click(function (e) {
    var key = $(this).data('applicationkey');
    viewModel.push(key); 
    console.log(viewModel);
});
&#13;
i {
  cursor: pointer;
}
&#13;
<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>
&#13;
&#13;
&#13;