基本上我想在DIV的内容发生变化时执行脚本.由于脚本是独立的(chrome扩展和网页脚本中的内容脚本),我需要一种方法来简单地观察DOM状态的变化.我可以设置投票,但这似乎很草率.
我试图弄清楚当从页面中删除元素时如何执行一些js代码:
jQuery('#some-element').remove(); // remove some element from the page
/* need to figure out how to independently detect the above happened */
Run Code Online (Sandbox Code Playgroud)
是否有为此量身定制的活动,例如:
jQuery('#some-element').onremoval( function() {
// do post-mortem stuff here
});
Run Code Online (Sandbox Code Playgroud)
谢谢.
如何在jQuery .append
完成后调用函数?
这是一个例子:
$("#root").append(child, function(){
// Action after append is completly done
});
Run Code Online (Sandbox Code Playgroud)
问题:当附加复杂的DOM结构时,在追加函数回调中计算根元素的新大小是错误的.假设DOM仍未完全加载,只有添加的复杂DOM的第一个子元素.
我正在尝试在iOS 8及更高版本下运行时用WKWebView实例替换动态分配的UIWebView实例,我找不到确定WKWebView内容大小的方法.
我的Web视图嵌入在更大的UIScrollView容器中,因此我需要确定Web视图的理想大小.这将允许我修改其框架以显示其所有HTML内容,而无需在Web视图中滚动,并且我将能够为滚动视图容器设置正确的高度(通过设置scrollview.contentSize).
我尝试过sizeToFit和sizeThatFits但没有成功.这是我的代码,它创建一个WKWebView实例并将其添加到容器scrollview:
// self.view is a UIScrollView sized to something like 320.0 x 400.0.
CGRect wvFrame = CGRectMake(0, 0, self.view.frame.size.width, 100.0);
self.mWebView = [[[WKWebView alloc] initWithFrame:wvFrame] autorelease];
self.mWebView.navigationDelegate = self;
self.mWebView.scrollView.bounces = NO;
self.mWebView.scrollView.scrollEnabled = NO;
NSString *s = ... // Load s from a Core Data field.
[self.mWebView loadHTMLString:s baseURL:nil];
[self.view addSubview:self.mWebView];
Run Code Online (Sandbox Code Playgroud)
这是一个实验性的didFinishNavigation方法:
- (void)webView:(WKWebView *)aWebView
didFinishNavigation:(WKNavigation *)aNavigation
{
CGRect wvFrame = aWebView.frame;
NSLog(@"original wvFrame: %@\n", NSStringFromCGRect(wvFrame));
[aWebView sizeToFit];
NSLog(@"wvFrame after sizeToFit: %@\n", NSStringFromCGRect(wvFrame));
wvFrame.size.height = 1.0; …
Run Code Online (Sandbox Code Playgroud) 我需要一种有效的机制来检测DOM的变化.最好是跨浏览器,但如果有任何有效的方法不是跨浏览器,我可以使用故障安全的跨浏览器方法实现这些.
特别是,我需要检测会影响页面上文本的更改,因此需要任何新的,删除或修改的元素或对内部文本(innerHTML)的更改.
我无法控制正在进行的更改(它们可能是由于第三方javascript包含等),因此无法从这个角度进行处理 - 我需要以某种方式"监视"更改.
目前我实施了一个"quick'n'dirty"方法,body.innerHTML.length
每隔一段时间检查一次.这当然不会检测导致返回相同长度的变化,但在这种情况下"足够好" - 这种情况发生的可能性非常小,并且在此项目中,未能检测到更改将不会导致丢失的数据.
问题body.innerHTML.length
是它很贵.在快速浏览器上可能需要1到5毫秒,这可能会让事情陷入困境 - 我也在处理大量的iframe,而且这些都会增加.我很确定这样做的代价是昂贵的,因为innerHTML文本不是由浏览器静态存储的,并且每次读取时都需要从DOM计算.
我正在寻找的答案类型是从"精确"(例如事件)到"足够好"的任何东西 - 或许像innerHTML.length方法一样"quick'n'dirty",但执行速度更快.
编辑:我还应该指出,虽然检测已经修改过的精确元素会"很好",但这并不是绝对必要的 - 只要有任何改变这一事实就足够了.希望这能够扩大人们的反应.我将调查突变事件,但我仍然需要IE支持的后备,所以任何笨拙的,创造性的,非常方形的想法将是非常受欢迎的.
我正在尝试在创建特定div时使函数关闭.用最简单的术语来说,我有这样的事情:
<a href="" id="foo">Click me!</a>
<script>
$("#foo").live("click",function(e) {
e.preventDefault();
$(this).append($("<div />").html("new div").attr("id","bar"));
});
</script>
Run Code Online (Sandbox Code Playgroud)
以前,我有突变事件听取div#bar的创建 - 这样的事情:
$("#bar").live("DOMNodeInserted", function(event) {
console.log("a new div has been appended to the page");
});
Run Code Online (Sandbox Code Playgroud)
是否有使用Mutation Observers的等价物?我尝试了attrchange.js功能你可以在DOM元素的样式对象更改后有一个javascript钩子触发器吗?但该插件仅检测元素何时被修改,而不是何时创建.
我需要创建一个事件监听器,这样当一个新元素被添加到文档或其任何子文件时,我的事件处理程序就会被调用.
任何想法如何使用?
我使用的是添加了类插件open
来.slide-out-div
打开时.
所以我试图改变一些css如果检测到打开.
我需要做的是
IF
$('.slide-out-div **open**') IS Detected then
$('.otherDiv').css('top','0px');
Run Code Online (Sandbox Code Playgroud)
不知道怎么把它们放在一起......
我有一对无线电,我在页面.ready事件上使用bind()为其分配一个函数.然后,在同一个ready事件中,我检查另一个输入的值,如果它的值是"1",我会在页面加载时预选第二个单选按钮.这是一个片段.
<input type="radio" name="fpago" id="fpago1" value="1" />one
<input type="radio" name="fpago" id="fpago2" value="2" />two
Run Code Online (Sandbox Code Playgroud)
...
$(document).ready(function() {
$("#myspan").hide();
$("#fpago1, #fpago2").bind('change click',function(){
togglePlazo();
});
//initial condition to preselect radio #2
grupo = $("#id_grupo").val();
if(grupo != '0'){
$("#fpago2").attr('checked', true); //checks the radio, but doesn't trigger function
}
});
Run Code Online (Sandbox Code Playgroud)
...
- > 在这里查看更完整的代码
问题是,如果满足条件,则检查无线电,但绑定功能togglePlazo()
不会触发......
如果稍后我手动单击单选按钮,则会触发该功能,并且跨度切换.它仅在使用jQuery进行的初始"检查"时,尽管无线电发生了变化,但该功能仍未触发.
我不知道我错过了什么,也许我应该绑定除了更改或点击之外的更多事件......我只是找不到我做错了什么.
注意:我使用的是jQuery 1.4.2,但小提琴设置为使用1.6.4(它没有1.4.2作为选项)