小编Mot*_*tie的帖子

从iframe元素访问jQuery数据

假设我在iframe中放置了同一个域的页面.在iframe中,我已经向元素添加了数据,如下所示:

HTML

<div id="data"></div>
Run Code Online (Sandbox Code Playgroud)

脚本

$('#data')
    .data('test1', 'this is test data 1')
    .data('test2', ['John', 'Smith'])
    .data('test3', {
        alert1: function() {
            $('#data').append('test3: successful<br>');
        }
    })
Run Code Online (Sandbox Code Playgroud)

现在,一旦这个页面在iframe中,我知道我可以按如下方式访问该元素:

$('#frame').contents().find('#data');
Run Code Online (Sandbox Code Playgroud)

但是当我尝试从该元素获取数据时,它总是未定义的.

$('#frame').contents().find('#data').data('test1'); // shows up as undefined
Run Code Online (Sandbox Code Playgroud)

我知道jQuery存储data()在一个cache对象内部,但我不知道如何从该文档外部访问它.我设置了这个演示来显示我的问题.单击"获取帧数据"按钮以查看结果.

我会感激任何输入:)

iframe jquery

9
推荐指数
1
解决办法
3万
查看次数

要避免的热键

我想添加一个可以在输入具有焦点时使用的热键,并将用于切换搜索结果。

我想这个问题更笼统,因为我想知道要避免使用哪些热键,以免与任何内容发生冲突。我找到了这个热键列表,但我怀疑任何地方都有完整的列表。因此,通过查看该列表,我想我会避免以下内容:

  • 功能键:F1、F3、F5、F11、F12
  • 导航:标签、箭头、主页、结束、翻页/向下、主页、结束、插入、删除、小键盘
  • Ctrl + (a, c, d, f, h, j, n, o, p, r, s, t, u, v, w, x, z)
  • Alt + 功能键 - 太容易滑动并按下 alt-F4
  • Alt + 导航 - 浏览器历史记录、更改选项卡/窗口等。
  • Alt + 字母 - 窗口菜单(alt-F = 文件等)
  • Shift + Navigation - 选择输入中的文本
  • 大写锁定(除非你是邪恶的 LOL)
  • 窗口/元键
  • 我不想使用 ctrl-alt、ctrl-shift、ctrl-alt-shift 等多键组合。

所以,剩下的:

  • 未使用的功能键
  • Shift + 功能键
  • Ctrl + 剩余字母
  • Alt + 字母键(但要确保它们不在菜单中)

还有其他我不知道的应该避免的组合键吗?

hotkeys web-standards

9
推荐指数
1
解决办法
1万
查看次数

隐藏的div高度(改变我的建议)

好的,我在这里回答某人的问题,关于为什么他们的剧本不起作用.他们将内容加载到隐藏的div中,然后获得高度,以便他们可以为包装div设置动画.但我总是试着测试我提供的代码.所以我做了这个演示来向他们证明.

那么,嗯,我进入了暮光之城还是我现在正在做梦?捏自己!

我在Firefox,IE和Chrome中尝试了这个演示,两种方法都返回相同的值.Firebug说零!我重新启动了我的计算机,我甚至更改了代码(删除了高度函数)并尝试使用jQuery 1.3.2并且它仍然有效!我知道的隐藏要素USED回到零值.即使这个SO答案也给出了我的建议!

所以我想我的问题是......我错过了什么或者我们给出了不好的建议吗?

jquery

8
推荐指数
1
解决办法
7418
查看次数

jQuery找到自我

这可能听起来很奇怪,但我正在研究一个需要在div中找到元素的插件,或者div本身.

脚本根据用户选择查找元素,但内容(包括标记)是可变的.因此脚本将按如下方式查找元素:

$('.block').find(selector); // selector set by user
Run Code Online (Sandbox Code Playgroud)

但是没有一种简单的方法让选择器选择'.block'.在使用find之前选择父级不是解决方案,因为有多个".block"元素.

我知道扩展expr[":"]选择器不会起作用,因为它只是在寻找孩子.但是,我确实通过制作一个':self'选择器找到了一种方法来" 破解 "这种方法:

(function($){
    var orig = $.fn.find;

    $.fn.find = function(sel){
        return (sel === ':self') ? this : orig.call(this,sel);
    }

})(jQuery)
Run Code Online (Sandbox Code Playgroud)

但这似乎有点过头了.而且每次查找函数都会减慢jQuery的处理速度.还有另一种方法吗?


谢谢你的回答!但我最终做到了这一点:

var b = $('.block'),
 el = (b.is(selector)) ? b : b.find(selector);
Run Code Online (Sandbox Code Playgroud)

jquery jquery-selectors

6
推荐指数
3
解决办法
1万
查看次数

在CSS中使用图像文件与数据URI

我正在尝试确定包含我编写的脚本所需图像的最佳方法.

我发现了这个网站,它让我考虑尝试这种方法将图像作为数据URI(由RFC 2397定义)包含,因为它太小了 - 它是1x1像素50%不透明度png文件(用于背景) - 它最终为2,792字节作为图像,而3,746字节作为CSS中的文本.

那么这会被认为是好的做法,还是会不必要地混乱CSS呢?

css image data-url

5
推荐指数
2
解决办法
5876
查看次数

在现有播放器上启用YouTube API

我有一个嵌入了youtube视频,我希望应用YouTube API.我使用jQuery添加url参数如下(demo):

$(document).ready(function(){
 var obj = $('object');
 obj.find('embed').attr('src', function(i,s){return s+'&enablejsapi=1&version=3'})
 obj.find('param[name=movie]').attr('value', function(i,v){return v+'&enablejsapi=1&version=3'})

 $('.play').click(function(){
  obj.find('embed')[0].playVideo();
 });
 $('.pause').click(function(){
  obj.find('embed')[0].pauseVideo();
 })
});
Run Code Online (Sandbox Code Playgroud)

这种方法在Firefox中运行良好,但在IE或Chrome中根本不适用(不确定其他浏览器).所以我的问题是如何修改它以使API在其他浏览器中工作?我是否必须完全删除对象并使用SWFObject替换它?

注意:嵌入代码直接来自YouTube.


更新:我想出如果我删除对象,添加url参数然后添加对象,我现在可以让它在Chrome中工作,但仍然不是IE(更新演示).


附录:当对象/嵌入已经包含启用代码时,为什么YouTube API不起作用?我试图避免使SWFObject成为一种依赖.

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="640" height="385">
 <param name="movie" value="http://www.youtube.com/v/2Qj8PhxSnhg&amp;hl=en_US&amp;fs=1&enablejsapi=1&version=3"></param>
 <param name="allowFullScreen" value="true"></param>
 <param name="allowscriptaccess" value="always"></param>
 <embed src="http://www.youtube.com/v/2Qj8PhxSnhg&amp;hl=en_US&amp;fs=1&enablejsapi=1&version=3" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed>
</object>
Run Code Online (Sandbox Code Playgroud)

javascript jquery youtube-api

5
推荐指数
1
解决办法
1991
查看次数

将Lua数据转换为JSON

这个EPGP魔兽世界插件输出一个epgp.lua数据库文件.

我写了一个插件,将Lua数据转换为JSON对象,以便在公会网站上显示.它在旧版本的插件中工作,但现在我无法让它正确地转换文件.以下是显示转换问题的两个片段 - 请参阅此演示.

第一个非常适合形成嵌套数组:

["roster_info"] = {
    {
        "Agantica", -- [1]
        "ROGUE", -- [2]
        "09/03-2013", -- [3]
    }, -- [1]
    {
        "Intikamim", -- [1]
        "PALADIN", -- [2]
        "17/02-2013", -- [3]
    }, -- [2]
},
Run Code Online (Sandbox Code Playgroud)

"roster_info" : [
    [
        "Agantica",
        "ROGUE",
        "09/03-2013"
    ],
    [
        "Intikamim",
        "PALADIN",
        "17/02-2013"
    ]
]
Run Code Online (Sandbox Code Playgroud)

但是当字符串替换应该是数组中的对象时,字符串替换将此下一个片段视为嵌套数组:

["bonus_loot_log"] = {
    {
        ["player"] = "Magebox",
        ["timestamp"] = "2013-03-07 13:44:00",
        ["coinsLeft"] = "-1",
        ["reward"] = "|cffa335ee|Hitem:86815:0:0:0:0:0:0:632235520:90:0:445|h[Attenuating Bracers]|h|r",
    }, -- [1]
            {
        ["player"] …
Run Code Online (Sandbox Code Playgroud)

javascript lua replace world-of-warcraft

5
推荐指数
2
解决办法
9077
查看次数

jQuery .is(“:visible)绝对位于视口之外的元素

我试图找出这是否是获取具有的div容器的可见性状态的正确方法 position: absolute

我在视口的左侧有一个侧边栏。单击“边栏按钮”时,“边栏”会在可见区域之外进行动画处理。

jQuery的:

$('#sideBarButton').click(function(){
    sidebar = $("#sideBar").outerWidth();
    if(!$("#sideBar").hasClass('outof'))
    {
       $("#sideBar").animate({left: screenW},100).addClass('outof');
       $("#boardContent").animate({width: screenW},200);
       $("#sideBarButton").animate({left: "+=" + (sidebar -3)},100);
    }
    else 
    {
       $("#boardContent").animate({width: bcW}, 50);
       setTimeout(function(){
           $("#sideBar").animate({left: screenW - sidebar}, 200).removeClass('outof');
           $("#sideBarButton").animate({left: "-=" + (sidebar -3)},200);
       }, 120);
    }
    $(this).find('img').toggle();
});
Run Code Online (Sandbox Code Playgroud)

由于sidebar现在根本不可见(对我而言),并且sidebar的左侧位置大于document.width,所以我的问题是我可以像这样获取(sideBar)的可见状态:

if($("#sideBar").is(":visible"))...
Run Code Online (Sandbox Code Playgroud)

或者,还有更好的方法?我的意思是jQuery如何确定某个元素是否可见?

css jquery

5
推荐指数
1
解决办法
947
查看次数

移动目录以进行便携式git配置

我已经在我的闪存驱动器上安装了便携式git版本,但我不希望我的存储库与程序位于同一目录中.我可以使用以下命令到达目录:

$ git -- git-dir=../Gits --work-tree=..Gits
Run Code Online (Sandbox Code Playgroud)

但我不想每次都输入.所以,我在发现这篇文章gitconfig文件.但它只显示如何设置core.worktree

core.worktree

设置工作树根目录的路径.这可以通过GIT_WORK_TREE环境变量和--work-tree命令行选项覆盖.它可以是.git目录的绝对路径或相对路径,由--git-dir或GIT_DIR指定,或自动发现.如果指定了--git-dir或GIT_DIR但未指定--work-tree,GIT_WORK_TREE和core.worktree,则将当前工作目录视为工作树的根.

请注意,即使在目录的".git"子目录中的配置文件中设置此变量,并且其值与后一目录不同(例如"/path/to/.git/config"已设置core.worktree),此变量也会受到尊重. to"/ different/path"),这很可能是一个配置错误.在"/ path/to"目录中运行git命令仍将使用"/ different/path"作为工作树的根目录,并且可能会对用户造成很大的混淆.

我试过这些设置无济于事.

[core]
  worktree = ../Gits
  gitdir = ../Gits
Run Code Online (Sandbox Code Playgroud)

有没有人知道为Windows 设置PortableGit-1.7.0.2-preview20100309.7zgit-dirwork-tree目录的方法所以我不必一直输入?

还有一种方法可以添加密码,所以我不必在其中输入密码吗?我看到了这些说明,但便携版本显然没有~/.profile~/.bashrc文件.

windows git github git-config

4
推荐指数
1
解决办法
6586
查看次数

Mottie的虚拟键盘:直接输入

Mottie有一个出色的jQuery屏幕键盘插件:https: //github.com/Mottie/Keyboard

默认情况下,键盘上的文本会进入其他输入,然后可以接受或取消.如果文本被接受,则进入源textarea/input.

但是有没有办法直接从键盘输入到源textarea /输入而不需要接受它(比如android/ios上的移动键盘)?

javascript jquery jquery-plugins virtual-keyboard

4
推荐指数
1
解决办法
2138
查看次数