我有一个Jquery Mobile shell页面,我正在使用Ajax加载表单.表单有一些复选框,我需要绑定到它.
奇怪的是,我可以让它直接在按钮上设置监听器,如下所示:
$('input[name="ohneiln"]').on('change', function() {
alert("hello");
});
Run Code Online (Sandbox Code Playgroud)
但是当我尝试将侦听器设置为$(document)并委托给checkbox侦听器时,侦听器永远不会触发:
$(document).on('change', 'input[name="ohneiln"]', function() {
alert("hello");
});
Run Code Online (Sandbox Code Playgroud)
问题:
为通过Ajax加载的"动态"元素设置事件绑定的正确方法是什么$(document).on()?这对change事件不可能或为什么我遇到麻烦?
感谢帮助!
我正试图在splash-image各种设备上进行手动设置.我这样做是通过检查orientation(触摸设备)或screen width vs. screen height(无触摸)并相应地设置URL.
然后我通过Javascript添加这个CSS规则:
document.styleSheets[3].insertRule('.initHandler:before {
background: url('+x+') no-repeat center center fixed;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}', 0)
Run Code Online (Sandbox Code Playgroud)
随着x作为图像取决于方向和屏幕尺寸被加载.
我的问题是这在landscape模式下工作正常,但在我的iPad portrait模式下,加载了正确的图像(根据肖像/风景不同),但它没有扩展到全屏大小.
问题:
我不能background-size在纵横模式下在iOS上使用CSS 吗?
感谢帮助!
编辑:
刚试过我的Android智能手机.那里工作得很好.没有任何意义,为什么它不适用于iPad.
我想在我的jquery-plugin(基于widget-factory)中调用一个函数.
看起来像这样:
(function( $, window) {
$.widget("mobile.multiview",$.mobile.widget, {
stackUp: function (source, event, data) {
...
}
}
}) (jQuery,this);
Run Code Online (Sandbox Code Playgroud)
我想从插件外部调用stackUp.问题:我不知道如何正确传递参数.这不起作用:
$('#trigger').multiview("stackUp('pagination', fakeEvent, fakeData)");
Run Code Online (Sandbox Code Playgroud)
有人能指出我在插件中调用公共函数并传递参数的正确语法吗?
更新:
我可以像这样调用函数:
$('#trigger').multiview('stackUp');
Run Code Online (Sandbox Code Playgroud)
但是我怎样才能传递参数?
我使用了很多这些:
$text = $menu.jqmData('menu-text') ?
$menu.jqmData('menu-text') : self.options.menuTxt;
Run Code Online (Sandbox Code Playgroud)
它已经是"速记"语法,但我想知道,是否有可能进一步减少上述行.必须有一个更好的方法,而不是检查$ menu.jqmData('menu-text')然后再写一遍.不存在吗?
感谢帮助!
我试图在IE8上发起一个自定义事件,并从这里和这里一起摆弄一个解决方案.但我不能让它工作......
我正在使用带有requireJS和谷歌分析的jquery mobile.所以我正在跟踪JQM pageshow事件.但是由于requireJS加载脚本async,我对pageshow的绑定需要在javascript"包装器"中进行,否则会产生错误,因为在解析代码片段时,jquery和jquery mobile都不会被加载.
所以我在每个页面的末尾都包含这个:
if (document.addEventListener) {
document.addEventListener("jqmReady",function(){trigAnalytics("jqmReady");alert("FF detected")},false);
} else if ( document.attachEvent ) {
document.attachEvent("jqmReady", function(){trigAnalytics("jqmReady");alert("IE detected")});
}
Run Code Online (Sandbox Code Playgroud)
检测到后,我正在使用pageshow绑定触发我的分析代码段:
var trigAnalytics = function( trigger ){
$(document).on('pageshow','div:jqmData(role="page").basePage', function (event, ui) {
var url = location.href;
try {
hash = location.hash;
if (hash && hash.length > 1) {
_gaq.push(['_trackPageview', hash.substr(1)]);
_gaq.push(['_setCustomVar', 1, 'id_external', ########, 1 ]);
} else {
_gaq.push(['_trackPageview', url]);
_gaq.push(['_setCustomVar', 1, 'id_external', ########, , 1 ]);
_gaq.push(['b._trackPageview', url]);
}
} catch(err) …Run Code Online (Sandbox Code Playgroud) 我有这个:
var setHeight = $(this).outerHeight();
// returns e.g. 687
$("#someElement").css({'height': $setHeight+"px !important" });
// I want to override this jquery-set height
Run Code Online (Sandbox Code Playgroud)
我不确定这是正确的方法......可能不是,因为它不起作用.
谢谢你的帮助!
我正在动态生成内容,所以我经常最终会documentFragments查询我在documentFragment中使用querySelectorAll或querySelector返回nodeList的元素.
我不时会在列表中添加一个项目,但我无法在网上找到关于这是否可行的任何内容.
我试过这样的:
document.querySelectorAll(".translate").item(length+1) = document.createElement("div");
Run Code Online (Sandbox Code Playgroud)
还有这个:
document.querySelectorAll(".translate").shift(document.createElement("div"));
Run Code Online (Sandbox Code Playgroud)
但两者都不起作用(如预期的那样)
问题:
是否可以手动将元素添加到NodeList?我猜,不过还是要问.
感谢您的一些见解?
编辑:
更多信息:我正在生成一个动态内容块,我想附加到我的页面.默认情况下,该块为英文.由于用户正在用中文查看页面,我正在动态片段上运行翻译器,然后将其附加到DOM.在我的页面上,我还有一个元素,比如一个标题,它应该根据添加的动态内容而改变.我的想法是一步到位=尝试添加一个元素到我的nodeList.但是现在写它...我想不可能:-)
我和JSLint混淆了.
我的代码最初检查是否div:jqmData("me")未定义如下:
if ( typeof el.jqmData("me") == "undefined"
? el.not(':jqmData(panel="main")').length > 0
: el.not(':jqmData(me="first")').length > 0 ){
}
Run Code Online (Sandbox Code Playgroud)
JSLint抱怨我应该用typeofwith 替换check ===,所以我喜欢这样:
if ( el.jqmData("me") === "undefined"
? el.not(':jqmData(panel="main")').length > 0
: el.not(':jqmData(me="first")').length > 0 ){
}
Run Code Online (Sandbox Code Playgroud)
JSLint不再抱怨了,但我的嵌套if语句被破坏了,因为el.not(':jqmData(me="first")').length即使我不应该,我现在总是以第二个结束.
问:
为什么JSLint的建议===了typeof == undefined?怎么会打破我的逻辑呢?
谢谢你的一些启发......
我正在使用bluebird处理异步脚本加载器,我正在努力将错误传递到我可以捕获它的位置.
加载文件时,我正在调用我的方法,declare如下所示:
declare("storage", [
{"name": 'util', "src": '../src/util.js'}
], function (util) {
var storage = {};
//...stuff with util
return storage;
});
Run Code Online (Sandbox Code Playgroud)
随着declare:
declare = function (name, dependency_list, callback) {
var resolver;
// digest promises returned for each module
function digestDependencyArray(my_dependency_array) {
var i, len, response_array;
len = my_dependency_array.length;
for (i = 0, response_array = []; i < len; i += 1) {
response_array[i] = my_dependency_array[i];
}
return Promise.all(response_array);
}
// resolve request promise …Run Code Online (Sandbox Code Playgroud) javascript ×6
jquery ×6
css ×3
append ×1
arrays ×1
asynchronous ×1
background ×1
bluebird ×1
css3 ×1
height ×1
ios ×1
jslint ×1
nodelist ×1
parameters ×1
portrait ×1
promise ×1
requirejs ×1
typeof ×1
undefined ×1