前端页面求助

2016-05-09 15:51:29 +08:00
 bugsnail

想做一个如下图添加标签的功能

我用 bootstrap 做好 popover 之后, 点击按钮, 是直接通过 jQuery 塞进一段 html 实现了弹出下图所示窗口,

但是, jQuery 选择器死活不能获取弹出窗口的按钮和其它元素, 用了$(document).ready 也不行...

JS 代码:

<script type="text/javascript" language="javascript">
    $(document).ready(function() {
        $('#addTags').popover({
            html : true,
            title: function() {
                return $("#popover-head").html();
            },
            content: function() {
                return $("#popover-content").html();
            }
        });

        $('#addTags').click(function (e) {
            e.stopPropagation();
        });

        $(document).click(function (e) {
            if (($('.popover').has(e.target).length == 0) || $(e.target).is('.close')) {
                $('#addTags').popover('hide');
            }
        });
    });
</script>

求大神帮忙看看, 谢谢!

PS:一直做后端, 也可能思路不对, 有更好的想法也希望分享一下.

1207 次点击
所在节点    问与答
15 条回复
loading
2016-05-09 15:59:21 +08:00
你这个应该是新增元素绑定事件问题。
jQuery 是建议使用 .live() 。
bugsnail
2016-05-09 16:05:58 +08:00
@loading .delegate() .live() .bind()都试过, 不行.....
loading
2016-05-09 16:09:09 +08:00
建议打包一个代码上来,这样比较方便大家实验。
sox
2016-05-09 16:09:59 +08:00
.live 很早很早前就 deprecated 并 remove 掉了 233
jarlyyn
2016-05-09 16:12:32 +08:00
.on
loading
2016-05-09 16:12:57 +08:00
@sox 哦?我没用 jQuery 好久了,楼主,抱歉。。。
bugsnail
2016-05-09 16:20:07 +08:00
bugsnail
2016-05-09 16:21:45 +08:00
解析成两个了.......

是这个地址: [http://7xiwkv.com1.z0.glb.clouddn.com/label.html]
Biwood
2016-05-09 16:24:57 +08:00
$(document).on('click', '#add-test', function(e){
alert(111);
});
bugsnail
2016-05-09 16:27:25 +08:00
@Biwood 出来了, 谢谢, 铜币奉上!

但还是希望知道原因, 可以简单说一下, 或者给个参考链接?
Biwood
2016-05-09 16:38:07 +08:00
@bugsnail 关键词:“事件代理(委托)”,利用的 JavaScript 事件冒泡机制
learnshare
2016-05-09 16:40:16 +08:00
事件委托
bugsnail
2016-05-10 10:47:52 +08:00
@Biwood 谢谢, 确实是这个, jQuery1.9 已经推荐用 on 了
bugsnail
2016-05-10 10:49:41 +08:00
@learnshare
@Biwood

今天又遇到一个问题, 我点 添加 按钮的时候, 要获取 input 标签的值, 再把它放到上面去.
可是, 下面又获取不到值了...


$(document).on('click', '#tagNew', function(e){
var val = $('#tagName').val();
alert(val);
});

前端简直了, 这种问题一般怎么排查, 感觉前端出了 bug 根本无从下手
Biwood
2016-05-10 12:32:36 +08:00
@bugsnail 看不到代码,很难找到问题所在,不过说实话,这类问题太基础了,建议你系统的学习一下 jQuery 的用法

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/277349

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX