Tag: dom

jquery:最快的DOM插入?

我对如何插入大量HTML感觉不好。 让我们假设我们得到: var html=” …. ” 我想把它放进去 $(“#mydiv”) 以前我做过类似的事情 var html_obj = $(html); $(“#mydiv”).append(html_obj); jQuery解析html创建DOM对象是否正确? 这就是我在某处读到的内容(更新:我的意思是我已经读过,jQuery解析html手工创建整个DOM树 – 它的废话对吧?! ) ,所以我改变了我的代码: $(“#mydiv”).attr(“innerHTML”, $(“#mydiv”).attr(“innerHTML”) + html); 感觉更快,是吗? 这是否正确,这相当于: document.getElementById(“mydiv”).innerHTML += html ? 或者是jquery在后台做一些额外的昂贵的东西? 也愿意学习替代品。

AngularJS:$ viewContentLoaded在部分视图出现之前触发

对于局部视图,我想做一些我通常用$(document).ready(function() {…})做的JavaScript,比如将venet监听器绑定到元素。 我知道这对AngularJS和加载到“根”视图中的部分视图不起作用。 因此,我向侦听器添加了一个侦听器,侦听器监听$viewContentLoaded事件。 调用侦听器的函数,因此事件被触发但在我看来好像是在呈现局部视图之前。 当我在侦听器的函数中设置断点并使用firebug调试它时,我也没有看到元素,函数中的jquery选择也没有找到局部视图的元素。 这就是控制器的样子: angular.module(‘docinvoiceClientAngularjsApp’) .controller(‘LoginController’, function ($scope, $rootScope) { $scope.$on(‘$viewContentLoaded’, function(event) { console.log(“content loaded”); console.log($(“#loginForm”)); // breakpoint here }); […] 我想我做错了,因为如果这是一个常见的错误,必须在stackoverflow上发布更多post。 当我使用ui-router和ui-view时 ,我会给你一个路由文件的摘录: angular .module(‘docinvoiceClientAngularjsApp’, [ ‘ui.router’, ‘ngAnimate’, ‘ngCookies’, ‘ngResource’, ‘ngMessages’, ‘ngRoute’, ‘ngSanitize’, ‘ngTouch’ ]) .config(function ($routeProvider, $stateProvider) { $stateProvider .state(‘login’, { url: ‘/’, templateUrl: ‘components/login/loginView.html’, controller: ‘LoginController’ }) .run([‘$state’, function […]

检测点击外部元素?

与此问题类似,但更进了一步。 我想检测一组项目之外的点击,我按以下方式处理: $(‘#menu div’).live(‘click’, function() { // Close other open menu items, if any. // Toggle the clicked menu item. $(‘body’).one(‘click’, function(event) { // Hide the menu item. event.stopPropagation(); }); }); 不幸的是,当另一个菜单项打开而另一个菜单项被点击时,这就像一个魅力,它需要两次点击才能打开第二个项目。 第一次单击隐藏第一个打开的菜单项,第二个单击显示第二个菜单项。 “正确”行为以下列方式起作用: 单击菜单项将打开它。 单击相同的菜单项(或其子项)将其关闭。 单击另一个菜单项将关闭第一个,打开第二个菜单项。 单击(打开)菜单项将关闭它们。 我尝试了以下代替上面的$(‘body’).one()命令忽略菜单项的点击而收效甚微: // Captures click on menu items in spite of the not. $(‘*’).not(‘#menu *’).one(‘click’, function() { // […]

使用通配符ID选择div

如何使用它的ID但使用widcard选择div? 如果DIV的ID是statusMessage_1098 ,我想以某种方式选择它,例如document.getElementById(‘statusMessage_*’) 。 这是因为在生成页面之前,我不知道ID的后缀,并且页面中只会出现一个这样的ID。 这可能吗? 谢谢你的帮助。

使用JQuery ajax在DOM操作之后附加事件

如何使用ajax响应操作dom后附加所有事件。 我有一个ajax请求获得一个html响应,它基本上是一个html的片段。 该片段HTML有很多按钮。 我想刷新dom,因此先前声明的和附加的事件也应用于该片段。 我不想继续使用jquery on()为每个按钮添加每个事件。 怎么办呢?

如何使用html标记从window.getSelection()。getRangeAt(0)中包装文本选择?

如何从window.getSelection()。getRangeAt(0)中选择并使用HTML标记(例如’span’或’mark’)将其包围? 我更喜欢直接的javascript或jQuery解决方案。 我能够使用alert输出所选文本,但还没有弄清楚如何用额外的标记来包围它。 我已经看到很多关于选择运行execCommand的例子,但这不是我想要的。 请参阅jsfiddle的工作示例 有任何想法吗? 谢谢

屏幕通过Javascript调整元素的坐标

我正在尝试获取浏览器窗口中元素的屏幕坐标(即相对于屏幕的左上角)。 很容易获得窗口的大小和位置(screenX,screenY),并且很容易(使用jQuery)获取元素的偏移量($(’element’)。offset()。left)。 但是,我需要知道它从元素一直到屏幕一角的像素数。 我发现了一些看似特定于IE的东西,但我希望这可以在尽可能多的浏览器中使用。 编辑添加图片: alt text http://img72.imageshack.us/img72/7938/offsetugh.jpg

Safari:通过DOM更新时,绝对定位的DIV不会移动

我正在尝试使用JS更新顶部和左侧CSS属性,在页面上为一些绝对定位的DIV设置动画。 在Chrome,FF甚至IE8中都不是问题,但在Safari 5中尝试它们只是坐在那里……奇怪的是,如果我调整Safari窗口的大小,它们将更新它们的位置…… 你可以在这里看到它的演示: http://www.bikelanebrakes.com/tests/flyingThing1.html 更新DIV的代码非常简单,只需要一点jQuery(也可以更新旋转,在Safari中运行得很好): $(this.elem).css({ ‘-webkit-transform’: ‘rotate(‘ + (( this.angle * (180 / Math.PI) ) * -1) +’deg)’, ‘-moz-transform’: ‘rotate(‘ + (( this.angle * (180 / Math.PI) ) * -1) +’deg)’, ‘transform’: ‘rotate(‘ + (( this.angle * (180 / Math.PI) ) * -1) +’deg)’, ‘left’: Math.round(this.xPos) + ‘px’, ‘top’: Math.round(this.yPos) + ‘px’ }); […]

在replaceWith之后没有注册的事件

当我replaceWith一个元素replaceWith一个DOM,然后replaceWith它replaceWith它时,注册到它的事件不会触发。 我需要保持完整的事件。 这是我的Javascript: var replacement = $(document.createElement(‘span’)); var original = $(this).replaceWith(replacement); replacement .css(‘background-color’, ‘green’) .text(‘replacement for ‘ + $(this).text()) .click(function() { replacement.replaceWith(original); }); 现场演示 在演示中,当您单击一个元素时,它将使用replaceWith替换为另一个元素。 单击新元素时,使用replaceWith将其替换为原始元素。 但是,点击处理程序不再起作用(我认为它应该在哪里)。

如何使用jQuery添加DOM元素?

我有一个function,我目前正在使用它来显示隐藏的div.a_type 我怎样才能修改这段代码,这样我就可以将新的div添加到DOM中,而不是淡入隐藏的div jQuery(function(){//添加答案 jQuery的( “add_answer”)。点击(函数(){ if(count> =“4”){ 警报(’只允许4个答案’); }其他{ var count = $(this).attr(“alt”); 计数++; ( ‘a_type _ ‘+数+”):$(本)。家长( ‘DIV第一’)找到淡入(); $(this).attr(“alt”,count); } }); }); 好的,既然我已经解决了这个问题,我还有一个问题, 我有另一个函数,如果单击一个按钮,将删除插入的div。 现在它没有工作,额外的div没有加载到页面加载的dom。 我如何触发function现在删除这些? jQuery(function(){//隐藏答案 jQuery(“.destroy_answer”).click(function(){ $(this).parents(“div:first”).fadeOut(function (){ $(this).remove() }); var count = $(this).parents(‘div:first’).parents(‘div:first’).find(‘.add_answer’).attr(“alt”); count–; $(this).parents(‘div:first’).parents(‘div:first’).find(‘.add_answer’).attr(“alt”, count); }); });