我创建了一系列用于移动Web应用程序的自定义jQuery事件.它们运行良好且经过测试.但是,我遇到了一个小问题,我无法理解.
我正在使用.clone()DOM中的一些元素,其中包含一个按钮.该按钮具有绑定到它的一些自定义事件(事件使用绑定.on()),但是.不幸的是,当我使用jQuery时.clone(),绑定不会被保留,我必须再次添加它们.
有没有人遇到这个,有人知道潜在的工作吗?我认为使用.on()应该保留现在或将来存在的元素的绑定?
有没有人知道是否可以将文本对齐到WebKit中某个<select>或更具体<option>元素的右侧.这不需要是包含IE的跨浏览器解决方案,但如果可能的话应该是纯CSS.
我试过了两个:
select { text-align: right }并且option { text-align: right },似乎在WebKit(Chrome,Safari或Mobile Safari)中都没有.
任何帮助感激不尽!
我有一个MySQL表,其中包含许多产品.我想要做的是按一个特定列对表进行排序(大多数值以数字开头,例如:1st,2nd)等等.但是,由于某些记录没有此列的值,所以当我尝试排序时,表格自动将空行放在第一位.
我正在寻找一种方法来排序ASCENDING行,但只在有序记录的末尾插入空白记录,如果这有意义的话?
任何帮助都会非常感激!
是否可以使用jQuery find()或children()函数仅选择元素的直接后代?
我有几个ul元素,每个元素都包含其他ul元素,还有一些根li元素.我将一个特定的父项存储ul在一个变量中(作为一个jQuery对象),然后查找使用中的任何根li元素:my_root_ul.find('li');.
但是,如果有意义的话,这个方法也会找到li属于ul内部的任何内容ul.
我的问题是,如何li在my_root_ul对象中仅选择直接后代类型find().通常,我们可以使用类似$('ul > li')只返回直接li元素的东西,但必须可以过滤掉返回的元素?
这是一个展示我的意思的例子:
<ul>
<li>I want this
<ul>
<li>I don't want this</li>
<li>I don't want this</li>
<li>I don't want this</li>
</ul>
</li>
<li>I want this</li>
<li>I want this</li>
</ul>
Run Code Online (Sandbox Code Playgroud) 我遇到了一个奇怪的问题,我不知道问题是什么.以下jQuery代码是我想要实现的简化版本:
var iframe = $('<iframe />');
iframe.prop('src', 'https://maps.google.com/maps?q=London&hl=en&sll=37.0625,-95.677068&sspn=46.677964,93.076172&t=h&hnear=London,+United+Kingdom&z=10');
iframe.appendTo($('body'));
// When the iframe loads:
iframe.load(function() {
alert(1);
});
Run Code Online (Sandbox Code Playgroud)
永远不会加载地图,并且load()永远不会触发事件.Chrome报告以下错误:
Refused to display 'https://maps.google.com/maps?q=London&hl=en&sll=37.0625,-95.677068&sspn=46.677964,93.076172&t=h&hnear=London,+United+Kingdom&z=10' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.
怎么绕过这个?
这是一个jsFiddle演示.
对于个人项目,我需要使用PHP和MySQL构建一个论坛.我不可能使用已经构建的论坛包(例如phpBB).
我目前正在研究构建这样一个应用程序所需的逻辑,但这是漫长的一天,我正在努力处理用户未读帖子的概念.我的一个解决方案是拥有一个单独的表,它基本上保存所有帖子ID和用户ID,以确定它们是否已被读取:
tbl_userReadPosts: user_id, post_id, read_timestamp
显然,如果用户的ID出现在此表中,我们就知道他们已经阅读了帖子.这很好,除非我们每天都有帖子(这比在提议的系统中更有可能)和用户的thousdands.即使不是几小时,这张表也会在几天内变得很大.
另一种选择是将用户的上一个活动作为时间戳跟踪,然后检索在上次活动更新后发布的所有帖子.这在理论上是有效的,但是假设用户正在写一篇非常长的帖子,同时几个成员也开始新的线程或回复其他线程中的帖子.当用户提交他的新帖子时,他的最后一个活动将被更新,因此与那些同时进行的活动不匹配.
有没有人有这方面的经验,你是如何解决它的?
我已经检查了phpBB,似乎系统为每个用户分配了一个自定义会话,并在此基础上工作,但文档对于如何处理未读帖子非常稀疏.
一如既往地感激地收到了想法和意见.
我知道我可以使用$.fn.myFunction构造函数创建自定义jQuery插件,并在JavaScript中调用自定义函数$('selector').myFunction().
但是,对于我目前正在进行的项目,我需要能够定义一个不需要选择器工作的函数.这实际上是一个MessageBox插件,它将以类似于C#MessageBox类的方式运行.因此,我最好将函数创建为MessageBox,然后按如下方式调用它:
var myMessage = $.MessageBox(); 然后依次 myMessage.Show();
注意在函数调用开始时jQuery引用中缺少选择器bracket.
我们将非常感激地就此最佳做法提出任何建议.
我遇到了一个奇怪的问题.我目前正在使用HTML5和CSS3仅为iOS 6制作移动网络应用程序.
然而,当input元素接收焦点并且显示软键盘时,滚动窗口以使输入不被键盘遮挡(即使它不会在任何情况下).
我已经阅读了SO和通过谷歌,可以添加以下内容以防止此行为(在UIWebView中查看此内容时):
input.onfocus = function () {
window.scrollTo(0, 0);
document.body.scrollTop = 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,似乎在iOS 6中,即使窗口最初滚动到0,0,它也会再次滚动以使聚焦元素居中.有没有其他人遇到这个,他们知道iOS 6的修复?
过去,当检测设备是否支持JavaScript中的触摸事件时,我们可以执行以下操作:
var touch_capable = ('ontouchstart' in document.documentElement);
Run Code Online (Sandbox Code Playgroud)
但是,true即使底层设备不支持触摸事件,Google Chrome(17.x.x +)也会返回上述检查.例如,在Windows 7上运行上面的代码返回true,因此如果我们将它与以下内容结合起来:
var start_evt = (touch_capable) ? 'ontouchstart' : 'onmousedown';
Run Code Online (Sandbox Code Playgroud)
在Google Chrome上,由于我们绑定了该事件,因此该事件永远不会被触发ontouchstart.简而言之,有没有人知道绕过这个的可靠方法?我目前正在运行以下检查:
var touch_capable = ('ontouchstart' in document.documentElement && navigator.userAgent.toLowerCase().indexOf('chrome') == -1)
Run Code Online (Sandbox Code Playgroud)
这远非理想......
我正在研究Sencha Touch应用程序,并有一个联系人列表.当点击列表项时,会显示一个ActionSheet,显示一些基本功能(如调用,删除和忽略).不幸的是,当用户点击并触发ActionSheet时,List项目仍然在叠加层下面被选中(参见下面的屏幕截图):

这是绑定到itemTap事件的函数:
itemTap: function(list, index)
{
// Deselect the selected record:
var currentRecord = list.getStore().getAt(index);
currentRecord.forename = currentRecord.get('forename');
currentRecord.surname = currentRecord.get('surname');
currentRecord.phoneNumber = currentRecord.get('phoneNumber');
currentRecord.shortFullName = currentRecord.forename + ' ' + currentRecord.surname[0];
list.getStore().deselect(index, true);
callButton.setText('Call ' + currentRecord.shortFullName + ' (' + currentRecord.phoneNumber + ')');
unfriendButton.setText('Remove ' + currentRecord.shortFullName + ' as friend');
friendActionSheet.show();
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,list.getStore().deselect(index, true)返回以下错误:Object [object Object] has no method 'deselect'
关于我可能做错了什么的想法,或者我如何能做到这一点?
javascript ×7
jquery ×4
mysql ×2
css ×1
dom ×1
forums ×1
google-maps ×1
html ×1
html5 ×1
ios6 ×1
iphone ×1
php ×1
phpbb ×1
read-unread ×1
sencha-touch ×1
sorting ×1
webkit ×1