小编Joh*_*lze的帖子

嵌套的JSON对象 - 我是否必须使用数组?

有没有办法在JSON中使用嵌套对象,所以我不必从所有内容中创建数组?为了我的对象没有错误地解析我似乎需要这样的结构:

{"data":[{"stuff":[
    {"onetype":[
        {"id":1,"name":"John Doe"},
        {"id":2,"name":"Don Joeh"}
    ]},
    {"othertype":[
        {"id":2,"company":"ACME"}
    ]}]
},{"otherstuff":[
    {"thing":
        [[1,42],[2,2]]
    }]
}]}
Run Code Online (Sandbox Code Playgroud)

如果我将这个对象提取到一个名为"result"的变量中,我必须像这样访问嵌套对象:

result.data[0].stuff[0].onetype[0]
Run Code Online (Sandbox Code Playgroud)

result.data[1].otherstuff[0].thing[0]
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎很笨拙和多余,如果可能的话我宁愿:

result.stuff.onetype[0]
Run Code Online (Sandbox Code Playgroud)

result.otherstuff.thing
Run Code Online (Sandbox Code Playgroud)

但是当一切都是数组时,如何直接使用对象键?对于我困惑和未受过教育的人来说,这样的事情似乎更合适:

{"data":
    {"stuff":
        {"onetype":[
            {"id":1,"name": ""},
            {"id":2,"name": ""}
        ]}
        {"othertype":[
            {"id":2,"xyz": [-2,0,2],"n":"Crab Nebula","t":0,"c":0,"d":5}
        ]}
    }
    {"otherstuff":
        {"thing":
            [[1,42],[2,2]]
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我可能在这里误解了一些基本的东西,但我无法获得jQuery解析器(也不是jQuery 1.4使用的本机FF解析器)来接受第二个样式对象.如果有人能够启发我将非常感激!

javascript syntax jquery parsing json

101
推荐指数
3
解决办法
27万
查看次数

生成三角形/六边形坐标(xyz)

我正在尝试提出一个迭代函数,为六边形网格生成xyz坐标.使用起始十六进制位置(简单来说就是0,0,0),我想计算六边形的每个连续"环"的坐标,如下所示:

到目前为止,我已经设法提出的是这个(例如在javascript中):

var radius = 3
var xyz = [0,0,0];

// for each ring
for (var i = 0; i < radius; i++) {
    var tpRing = i*6;
    var tpVect = tpRing/3;
    // for each vector of ring
    for (var j = 0; j < 3; j++) {
        // for each tile in vector
        for(var k = 0; k < tpVect; k++) {
            xyz[0] = ???;
            xyz[1] = ???;
            xyz[2] = ???;
            console.log(xyz);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道每个环包含比前一个多6个点,每个120°向量包含从中心开始的每个步骤的一个附加点.我也知道x + y …

math vector coordinates hexagonal-tiles coordinate-systems

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

REST的cookie路径在IE中失败而没有尾随斜杠

我被要求在具有RESTful URL且没有斜杠(.NET MVC)的页面上构建选项卡式部分,例如http:// myhost/books/the-amber-spyglass

为了使标签部分更加用户友好,我希望他们记住当用户四处移动时在每个页面上打开哪个选项卡,这样如果他们返回到一本书,他们之前在同一个选项卡上仍然打开.这是通过设置名为"tab"的cookie来实现的,其中值设置为tabid,路径设置为它们所在的页面(因此它不会影响其他页面上的选项卡).到目前为止,你认为是非常基本的东西,它确实也很好用.

进入Internet Explorer.

在IE中,它显示了一个带有路径/书籍/琥珀色 - 望远镜的cookie与上述URL不匹配,因此无法正确设置.如果我添加一个尾部斜杠,所以路径是/ books/the-amber-spyglass /而不是它工作正常 - 但我不能改变我们的URL模式,即使我可以"琥珀 - 望远镜"是一种资源,而不是夹.

有没有人有一个推荐的解决方案,这肯定是非常常见的问题?

提前谢谢了,

JS

javascript cookies rest internet-explorer path

10
推荐指数
1
解决办法
4180
查看次数

如何在多个文件上拆分jQuery插件

我正在编写一个小型CMS作为jQuery AJAX插件,虽然它绝不是太长(目前大约500行),但我可以看到将它拆分成单独的文件会很好,每个"子类"一个:

(function($) {
    $.fn.myCMS = function() {
        this.classOne = function() {
        ...
        }
        this.classTwo = function() {
        ...
        }
    }
})(jQuery);
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我想将classOne的代码放在一个文件中,将classTwo放在另一个文件中,将myCMS"baseclass"放在第三个文件中.有可能用这样的东西(在每个"子类"文件中)实现这一点吗?

$.extend(myCMS,classOne = function() {
...
})
Run Code Online (Sandbox Code Playgroud)

非常感谢,

JS

jquery plugins file extend

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

Rails资产管道 - 如何将资产包括在资产路径中?

好的,所以我已经转换了我的这个多皮肤的应用程序,以利用Rails 3.1中引入的资产管道.在大多数情况下,它非常简单,我喜欢预处理能力,它允许您在CSS/JS文件中使用内联Ruby.我遇到了一个主要问题,尽管Sprockets的强大功能似乎很难解决.我的应用程序可以在运行时选择任意数量的皮肤(或"身份")运行.这个"身份"参数设置了诸如缓存目录,数据库连接,视图路径之类的东西 - 实际上是资产路径.虽然所有"身份"都可以拥有自己的样式表,但还有一个共享的样式表可用于所有实例.所以assets文件夹结构看起来像这样:

在/app/assets/stylesheets/aplication.css.erb中:

<% require_asset("shared.css") %>
<% require_asset("overrides.css") %>
Run Code Online (Sandbox Code Playgroud)

这会加载两个样式表,关键是它使用配置的资产路径来解决它们(这就是我使用require_assets而不是标准requireinclude指令的原因,因为它们没有击中解析器).它返回找到的第一个匹配项,并允许我非常轻松地覆盖部分或全部默认样式.所以

/app/assets/stylesheets/shared.css
Run Code Online (Sandbox Code Playgroud)

可以通过在实例资源文件夹中放置具有相同名称的文件来覆盖

/app/assets/[identity]/stylesheets/shared.css
Run Code Online (Sandbox Code Playgroud)

如果没有这样的文件,它会默默地回退到默认的shared.css.

这一切都运行得非常出色 - 我对Javascripts,图像和字体使用相同的技术,并且在预编译期间一切都得到了整齐的处理和打包.但.有一种(横向)继承我无法实现; 有时身份的皮肤与另一个只有少数几条线条不同的皮肤(例如相同的布局但颜色方案不同)非常相似,我真的希望能够做到这样的事情:

资产/样式表/ application.css.erb:

<% require_asset("shared.css") %>
<% require_asset("overrides.css") %>
Run Code Online (Sandbox Code Playgroud)

资产/ current_identity /样式表/ overrides.css:

<% require_asset("../../some_other_identity/stylesheets/overrides.css") %>
/* followed by the dosen or so lines that differ for this skin */
...
Run Code Online (Sandbox Code Playgroud)

这个FAILS因为在当前上下文中"some_other_identity"不在资产路径中--Rails没有在开发模式下找到文件,当然它也不包括在预编译期间.如果我将它包含在资源路径中,则会加载错误的覆盖.css(只能有一个).所以我一直在尝试将这样的东西放在overrides.css的顶部:

<%= File.read(Rails.root.join("app/assets/some_other_identity/stylesheets/overrides.css")) %>
/* rest of CSS */
...
Run Code Online (Sandbox Code Playgroud)

事实上,这与预期一样有效.但.因为我现在正在使用资产管道来提供所有资产,所以我不能再使用固定路径引用CSS中的图像 - 我必须使用<%= asset_path("some_image.png") %>路径解析器才能发挥其魔力.这意味着我overrides.css的确是overrides.css.erb,当然,当您这样做时,ERB预处理不会发生 …

ruby-on-rails erb asset-pipeline

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

为什么我的jQuery选择器选择list元素中的所有锚点?

几个小时以来一直在努力解决这个简单的选择器问题,并且必须忽略一些显而易见的事情.我有一个<ul>在其中一些<li>■找嵌套<ul>秒.每个都<li>包含一个链接,当点击它时我想执行一个函数(而不是导航),但重要的是,这应该只发生在父包含的链接<ul>而不是嵌套中可能存在的任何链接<ul>.简单的你会想:

HTML:

<ul>
    <li>
        <a href="dontleavethis.page">A link</a>
        <ul>
            <li><a href="navigate.there">A nested link</a></li>
            <li><a href="navigate.somewhere">Another nested link</a></li>
        </ul>
    </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

jQuery的:

$('li:has(ul) a').click(function() { 
    bla bla bla...
    return false;
});
Run Code Online (Sandbox Code Playgroud)

事实是,无论我如何表达我的选择器,我都无法阻止嵌套中的链接<ul>触发点击处理程序.它们显然":has(ul)"与选择器的条件不匹配,但处理程序仍然因某种原因而附加.我在这做错了什么?

html jquery nested css-selectors html-lists

0
推荐指数
1
解决办法
2023
查看次数