起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1470|回复: 1

[结贴] 使用自定义属性创建button,并绑定click事件,事件不响应

[复制链接]

8

主题

15

帖子

77

积分

初级会员

Rank: 2

积分
77
QQ
发表于 2018-8-17 18:02:55 | 显示全部楼层 |阅读模式
想实现一个功能,使用list显示一系列图片;点击图片时,当前图片上显示注释信息。div结构如下:
        <div class="x-scroll-content" xid="div5">
          <div component="$UI/system/components/justep/list/list" class="x-list"
            xid="list1" data="listData">
            <ul class="x-list-template" xid="listTemplateUl1">
              <li xid="li1">
                <div xid="div100" style="position:relative;" bind-click="div100Click">
                  <div bind-attr-test1="$index()" xid="div101" style="position:absolute;"></div><img src=" " alt="" xid="image1" bind-attr-src=' val("fImage")' style="width:100%;" bind-click="image1Click" />  

                </div>  
                <hr xid="hr1"/>
              </li>
            </ul>
          </div>
        </div>  


        Model.prototype.div100Click = function(event){
                var me = this;
                var linkData = this.comp('linkData');                         // 组件对象
                if(linkData.count() > 0) {
                        var i = 0;
                        linkData.each(function(param){
                                (function(i) {
                                        var style = "position:absolute;top:" + param.row.val("fPositionY") + "px;left:" + param.row.val("fPositionX") + "px;";
//                                        var parentNode = me.getElementByXid("div101");   // dom 对象
                                        var parentNode = $(event.currentTarget).find("[test1='" + event.bindingContext.$object.index() + "']");        // dom对象
//                                        justep.Util.hint("parentNode:" + parentNode.html());
                                       
                                        if(parentNode) {
                                                var flag = {
                                                        "xid" : "btn" + i,
                                                        "label" : param.row.val("fName"),
                                                        "parentNode" : parentNode,
                                                        "class" : "btn btn-link",
                                                        "style" : style
                                                };
                                                var button = new Button(flag);
                                                button.on("onClick",function(event){
                                                        justep.Util.hint("onClick:");
                                                });
                                        }
                                })(i);
                                i = i + 1;
                        });
                }

        };

现在的问题是:
1. var parentNode = $(event.currentTarget).find("[test1='" + event.bindingContext.$object.index() + "']");        // dom对象
   使用这个获取dom node时,可以正常创建button,但无法进入onClick()事件中。
   
   var parentNode = me.getElementByXid("div101");   // dom 对象
   使用这个获取dom node时,可以正常创建button(只会在第一个图片位置创建button,div101固定的),onClick()可以正常进入

   第一种方法中,应该怎样注册click事情?


2.通过自定义属性test1获取dom node的问题,
  var parentNode = $(event.currentTarget).find("[test1='" + event.bindingContext.$object.index() + "']");
  使用自定义属性test1获取dom node时,只能将代码放在div100的click事件中,才能看到创建的button。
  如果放在image1的click事件中,将看不到创建的button,估计dom node没有获取到。

  如果使用var parentNode = me.getElementByXid("div101"),则button的click事件都是正常的。

  这个是不是正常的?

期望高手的回应,谢谢!

  



8

主题

15

帖子

77

积分

初级会员

Rank: 2

积分
77
QQ
 楼主| 发表于 2018-8-18 12:06:00 | 显示全部楼层
已经解决,没有搞清楚dom对象和jquery对象。请关闭吧。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-3 00:00 , Processed in 0.067722 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表