javascript - 如何使用 jquery $.proxy 事件附加获取当前选定的值

标签 javascript jquery

我有以下代码集。但是当我尝试从 clickOnLi 获取 id 时,我得到了未定义的信息。我正在使用 jQuery $.proxy 来附加事件处理程序。

演示 HTML

<div id="container">
    <ul>
        <li data-id="a">Apple</li>
        <li data-id="b">Ball</li>
        <li data-id="c">Colombo</li>
        <li data-id="d">Dayawansa</li>
        <li data-id="e">Ela kiri</li>
        <li data-id="f">Fundametals</li>
    </ul>
    <p class="display"></p>
</div>

演示 JavaScript

var myObject = function () {
        this.container = $('#container');
        this.init()
    };

    myObject.prototype = {

        constructor: myObject,

        init: function () {
            console.log("init");
            this.setListeners();
        },

        setListeners: function () {

            var proxy = $.proxy(this.clickOnLi, this, {'context': this, 'foo': "bar"});
            this.container.find('li').on('click', proxy);

            // This is working
            //this.container.find('li').on('click',{'context': this},this.clickOnLi);
        },

        clickOnLi: function (param) {
            var mContext = param.context;
            mContext.container.find('.display').html($(this).data('id'));
            console.log($(this).data('id')); // get undefined

            // This is working
            //mContext.container.find('.display').html($(this).data('id'));

        }
    };

    $(function () {
        new myObject();
    })

但是我没有使用 $.proxy,而是使用了如下

this.container.find('li').on('click',{'context': this},this.clickOnLi);

它将完美地工作。我在这里缺少什么。

https://jsfiddle.net/umanda/Lxdy4xh4/3/

最佳答案

您是否尝试过以这种方式访问​​它

$(this).attr('data-id');

关于javascript - 如何使用 jquery $.proxy 事件附加获取当前选定的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49168082/

相关文章:

javascript - 如何在 NodeJS 中按值获取元素的 CSS 选择器?

javascript - 在 Canvas 中创建多个可拖动的圆圈

jquery - `.live()` 方法的 'hover' 绑定(bind)的正确语法是什么?

javascript - 将 ajax 错误和成功函数替换为传递给父函数的替代函数

javascript - 如何为 Firefox 的单选按钮添加视觉焦点指示器

javascript - 从 Jquery load() 编辑的内容回发

javascript - Jquery - 是否可以将 css 悬停/焦点行为绑定(bind)到按键?

javascript - Bootstrap Accordion ,单击时滚动到事件(打开) Accordion 的顶部?

javascript - 如何让这个 jQuery 脚本在多个元素上单独运行

javascript - 如何将 div 元素放入 jQuery Slider 中,显示至少 5 个元素,并使用左右 slider 查看更多元素?