我已经使用outerHeight
,并outerWidth
在许多地方.现在,在jQuery 1.8发布之后,我遇到了很多由对象返回而不是它的大小引起的问题.
例如:
$('#stackoverflowdiv').Height() // returns 100 px
$('#stackoverflowdiv').outerHeight() // returns "stackoverflowdiv" div
Run Code Online (Sandbox Code Playgroud)
我发现解决这个问题的唯一方法是在函数中使用"true/false",如下所示,但我得到的结果与标准width()
和height()
函数相同:
$('#stackoverflowdiv').outerHeight(true) // returns 100 px
$('#stackoverflowdiv').outerHeight(false) // returns 100 px
Run Code Online (Sandbox Code Playgroud)
有谁知道为什么这不再工作或以其他方式获得元素的高度/宽度+其边距.
编辑:我开始相信这是因为我使用contents()
函数在iframe中选择元素.我会尝试做一个演示.
如何在jQuery 1.8+中找到对象的事件处理程序?
var func = function(){ alert(1); };
var obj = $('#obj');
obj.on("click", func);
// obj.data('events') is undefined
Run Code Online (Sandbox Code Playgroud) 在我看来,Firefox应该更好地在使用时返回正确的值$(window).height()
.
我正在使用jQuery 1.8.2.这是特定版本中的错误吗?我测试的每个其他浏览器在计算视口高度时都会返回一个合适的值.
为了解决这个问题,我使用下面的剪辑将像素值应用于div.
$(window).bind('cwsObjectsShown', function() {
var height = $(window).height();
if (height === 0) {
height = window.innerHeight;
}
height = height - '120';
$('#game_objects').css('height', height + 'px');
});
Run Code Online (Sandbox Code Playgroud) 我的Web框架自动将我的jQuery脚本更新为当前的最新版本1.9.
现在我的全部:
$(".myclass").live("click", function() {...
Run Code Online (Sandbox Code Playgroud)
不再工作了.我主要使用它与一些ajax调用,在我的页面中填充html.
我会知道如何在上一版本中替换此功能.一位朋友告诉我使用"on"代替,但"on"仍然固定在同一个元素上.
解释,在这个例子中(没有ajax),我使用"+"图标来显示"ul li list".
$(".closed").live('click', function(){
$("#ul_list_"+$(this).attr('id')).addClass("displayed").removeClass("hidden").show();
$(this).addClass("openned").removeClass('closed');
$(this).html('<i class="icon-minus"></i>');
});
$(".openned").live('click', function(){
$("#ul_list_"+$(this).attr('id')).addClass("hidden").removeClass("displayed").hide();
$(this).addClass("closed").removeClass('openned');
$(this).html('<i class="icon-plus"></i>');
});
Run Code Online (Sandbox Code Playgroud)
(我知道脚本不是最优化的,但它确实有效.我使用类来打开或关闭我的列表.如果访问者没有启用JS,则不会隐藏任何内容,所有折叠列表都会打开)
笔记:
试图做的angular.element(stringWithHtmlStructure);
原因
Error: Syntax error, unrecognized expression: <div id="foo">bar</div>
Run Code Online (Sandbox Code Playgroud)
在jquery 1.9.1中,它适用于jquery 1.8.3
这是一个问题还是一个功能?安全一个或许?我该如何处理?
1.8.3示例http://plnkr.co/edit/ZYYKIixcYzOL46hq0puS?p=preview 1.9.1示例http://plnkr.co/edit/ETmQMY8KoCP0gaKdSrMD?p=preview
对于任何有角度的东西来说绝对不是问题,做$(stringWithHtmlStructure)
同样的失败就像你在这里看到的那样http://plnkr.co/edit/FqvOKZ62t0IJ57cT05ew?p=preview
我注意到$.resize()
jQuery 的事件在页面加载时被触发,而窗口没有任何实际的"调整大小",具体取决于浏览器.
它不仅被解雇一次,有时甚至两次.(在Chrome 30.0.1599.101 m中加载,在Opera中调整大小...)
这表现正常吗?在为所有浏览器加载网站时,有没有办法统一这种行为?
resize
调整大小时我已经调用了一次(使用间隔),但这并没有解决在Chrome加载时触发事件的问题.
我无法创建一个复制此问题的小提琴,但您可以使用如下文件测试此行为:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
$(window).resize(function() {
alert("Fired!");
});
</script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
首次使用Chrome加载页面时,系统会触发此事件.任何刷新它都不会被触发.
以下代码引发了unsupported pseudo: hover
jQuery 1.8 的错误,而它在jQuery 1.7.2上运行完美:
if(!$(this).parent().find('ul').first().is(':hover')) {
$(this).parent().parent().removeClass('open');
}
Run Code Online (Sandbox Code Playgroud)
有谁知道发生了什么?
由于不推荐使用jQuery .toggle事件方法.我们用什么来模拟这个事件(备用点击)?
以下适用于IE 9.0.8以外的所有浏览器.它使用ajax请求在div中加载调查表单.
$('.tab-content').on('click', '.show_survey_form', function(e) {
e.preventDefault()
target = $(this).attr("data-target")
my_href = $(this).attr("href")
console.log("load: " + target + " target: " + my_href)
// load: #survey_response_form_33 target: /surveys/33/survey_responses/edit_multiple
// Don't make a request unless the form is opening.
if ($(this).hasClass('collapsed')) {
console.log("Making request!")
//$(target).load(my_href)
$(this).html(closeSurveyForm) // Just changes the language on the button
} else {
$(this).html(respondToSurvey) // Just changes the language on the button
}
}
Run Code Online (Sandbox Code Playgroud)
.load在调试期间被注释掉.IE在这种情况下使用.hasClass似乎有问题.它在其他地方使用没有问题.
真正奇怪的是,当我打开开发工具窗口时,它开始工作.它在此之前始终不起作用,并且在击中F12之后始终如一.
其他问题表明,当类包含\ r \ncchar时,hasClass方法不起作用,但这不是这种情况.我正在使用jQuery 1.8.3.
更新:将href更改为"#"并将URL写入数据加载无效.仍然适用于除IE 9.0.8之外的所有浏览器.
我有一个<script>
包含<div>
元素内容的标记.现在我需要复制/克隆内容,将其存储在变量中并稍后附加.
奇怪的是,当我附加变量内容时,我只是得到了外部<div>
.
知道我做错了什么吗?我们正在使用jQuery 1.8.2.
这是我的代码:
HTML内容:
<div id="payl">
<div class="toolTipHandler">
<script type="text/javascript">
var xxx_title = "<h4>title</h4>";
var xxx_text = "<p>bla bla</p>";
</script>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
script.js内容:
var toolTipHandler = jQuery('#payl .toolTipHandler').clone(true);
document.getElementById('payl').innerHTML = '';
jQuery('#payl').append(toolTipHandler);
Run Code Online (Sandbox Code Playgroud)
结果:
<div class="toolTipHandler"></div>
Run Code Online (Sandbox Code Playgroud) 我使用的是这段代码:
http://labs.abeautifulsite.net/archived/jquery-alerts/demo/
Run Code Online (Sandbox Code Playgroud)
它与jQuery 1.8.3一起运行良好.
现在我改为jQuery 1.9.1,它停止了工作
我的大多数其他代码都有问题,大部分我不得不改变.live for .on它已经解决了(我不知道这是否是正确的做法),但是使用这段代码,我找不到问题.
这条线似乎给出了问题:
// IE6 Fix
var pos = ($.browser.msie && parseInt($.browser.version) <= 6 ) ? 'absolute' : 'fixed';
Run Code Online (Sandbox Code Playgroud)
你可以在jsFiddle中测试它,你可以改为jQuery 1.8.3,看它是如何工作的.
简单地说,使用这个:
<select id="Test">
<option value="1">ABC</option>
<option value="2">DEF</option>
</select>
Run Code Online (Sandbox Code Playgroud)
如何使用jQuery option[value="2"]
仅使用"DEF" - 请记住我使用的是1.8.2
谢谢!
jquery-1.8 ×12
jquery ×11
javascript ×6
jquery-1.9 ×3
html ×2
angularjs ×1
firefox ×1
height ×1
migration ×1