将处理程序附加到父元素中

时间:2013-11-19 20:40:51

标签: jquery html

我有两个框架:一个是父级,另一个是孩子。

从子页面我想附加一个eventHandler。我无法运行代码。永远不会调用eventHandler中的代码。如果我引用子页面上的元素,那么代码可以正常工作。

通过将bg颜色更改为代码中所需的元素来确保我正确引用父级中的元素(这很有效。)(参见下面的代码)

var drop = $('#alignmentBox', window.parent.document);
drop.css("background-color",'#80BFFF');

我并没有真正看到firebug中的任何错误,只是因为没有调用eventHandler中的代码。

这是eventHandler

// Tells the browser that we *can* drop on this target
            addEventHandler(drop, 'dragover', function (e) {
                e = e || window.event; // get window.event if e argument missing (in IE) 
                if (e.preventDefault) {
                    e.preventDefault();
                }
                fileNumber = fileNumber + 1;
                //drop.innerHTML = fileNumber;
                $("#drop1").css('opacity', 0.5);
                $("#drop1").css("background-color",'#80BFFF');
                var newFile =  $('#s-d12245cc-1680-458d-89dd-4f0d7fb22724', window.parent.document)[0];
                newFile.css("background-color",'#80BF55');

                return false;
            });

/seperate event
    function addEventHandler(obj, evt, handler) {
        if (obj.addEventListener) {
            // W3C method
            obj.addEventListener(evt, handler, false);
        } else if (obj.attachEvent) {
            // IE method.
            obj.attachEvent('on' + evt, handler);
        } else {
            // Old school method.
            obj['on' + evt] = handler;
        }
    }

1 个答案:

答案 0 :(得分:0)

您正在尝试在您创建的addEventListener的jquery对象上使用本机drop。您可以通过向其添加[0]来获取jQuery对象中的DOM元素

尝试:

addEventHandler(drop[0], 'dragover', function (e) {