小编Yuk*_*élé的帖子

JQuery - 将ajax响应存储到全局变量中

我仍然是jQuery和ajax场景的新手,但我有一个$ .ajax请求执行GET来检索一些XML文件(大约6KB或更少),但是在用户花费在该页面上的持续时间内,XML内容应该是不会/不会改变(这个设计我无法改变,我也无权更改XML文件,因为我正在从其他地方读取它).因此,我有一个全局变量,我将响应数据存储到其中,并且对此数据的任何后续查找都在此变量上完成,因此不需要进行多个请求.

鉴于XML文件可以增加的事实,我不确定这是最佳实践,并且也来自java背景我对全局公共变量的想法通常是禁止的.

所以我的问题是,是否有更好的方法可以做到这一点,以及一个问题,如果文件扩展到一些荒谬的文件大小,这是否会导致任何内存问题?

我认为数据可以传递到xml对象中的一些getter/setter类型函数,这将解决我的全局公共变量问题,但仍然提出了我是否应该将响应存储在对象本身内的问题.

例如,我目前所做的是:

// top of code
var xml;
// get the file
$.ajax({
  type: "GET",
  url: "test.xml",
  dataType: "xml",
  success : function(data) {
    xml = data;
  }
});
// at a later stage do something with the 'xml' object
var foo = $(xml).find('something').attr('somethingElse');
Run Code Online (Sandbox Code Playgroud)

xml ajax jquery response

66
推荐指数
7
解决办法
18万
查看次数

jQuery获取元素相对于另一个元素的位置

所以我有一个喜欢的div:

<div class="uiGrid">

<div class="trigger"></div>

</div>
Run Code Online (Sandbox Code Playgroud)

我想知道触发器对uiGrid的位置并试过这两个:

$('.trigger').offset('.uiGrid');

$('.trigger').position('.uiGrid');
Run Code Online (Sandbox Code Playgroud)

但都没有得到它.偏移量相对于文档而言,位置相对于父级而不是指定的元素.

我该怎么做?谢谢

jquery

57
推荐指数
2
解决办法
7万
查看次数

来自Makefile中子目录的源代码

我有一个使用Makefile构建的C++库.直到最近,所有的源都在一个目录中,Makefile做了这样的事情

SOURCES = $(wildcard *.cpp)

工作得很好.

现在我添加了一些子目录中的源代码subdir.我知道我能做到这一点

SOURCES = $(wildcard *.cpp) $(wildcard subdir/*.cpp)

但我正在寻找一种避免subdir手动指定的方法,即wildcard查看子目录,或以某种方式生成子目录列表并使用多个wildcard函数扩展它.此时,具有非递归解决方案(即,仅扩展第一级)将没有问题.

我没有找到任何东西 - 我最好的猜测是find -type d用来列出子目录,但感觉就像一个黑客.有没有内置的方法来做到这一点?

makefile

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

ES6类:在方法上应用'addEventListener'访问'this'

在这个es6脚本中,click事件不起作用,因为sayHello方法是用this.elm(<div>)调用的this.

如何在不松散范围的情况下将事件与方法相关联?

class player{
  constructor (name) {
    this.name = name;
    this.elm = document.createElement('div');
    this.elm.addEventListener('click', this.sayHello);
  }
  sayHello() {
    console.log(this.name + ' say: "hello!"'); // 'undefined say 'hello!"';
  }
  kill() {
    console.log(`RIP ${this.name} :'(`); 
    this.elm.addClass('dead');
    this.elm.removeEventListener('click', this.sayHello);
  }
}
Run Code Online (Sandbox Code Playgroud)

javascript dom dom-events ecmascript-6

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

CSS calc with inherit

我想inheritcalc()这样的:

#foo {
  animation-duration: 10s;
}
#foo > .bar {
  animation-duration: calc(inherit + 2s); /* =12s */
}
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.

是浏览器错误还是规格?

css inheritance css-animations css-calc

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

php file_get_contents和&amp;

我正在尝试使用php的file_get_content('a url');

例如,如果网址中包含"&",那就是问题

file_get_contents('http://www.google.com/?var1=1&var2=2')

它会自动发出请求 www.google.com/?var1=1&amp;var2=2

我该如何防止这种情况发生?

php

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

如何列出Math对象的所有属性?

当我做

for (var i in window) console.log(window[i])
Run Code Online (Sandbox Code Playgroud)

我得到了一个窗口属性和方法列表

当我为"数学"对象做同样的事情时,我什么都没得到.

typeof "window" == typeof "Math"
Run Code Online (Sandbox Code Playgroud)

返回TRUE,所以我没有看到我的循环不起作用的原因.

这很奇怪,好像我直接写,Math['E']我得到常数E的值.

UPDATE

谢谢.所有答案都很有帮助,并提供了我想要的.我赞成他们中的大部分.

javascript

15
推荐指数
2
解决办法
1678
查看次数

在窗口上添加Vue.js事件

Vue.js允许在元素上应用事件:

<div id="app">
   <button @click="play()">Play</button>
</div>
Run Code Online (Sandbox Code Playgroud)

但是如何在window对象上应用事件?它不在DOM中.

例如:

<div id="app">
  <div @mousedown="startDrag()" @mousemove="move($event)">Drag me</div>
</div>
Run Code Online (Sandbox Code Playgroud)

在这个例子中,如何监听mousemove事件window

javascript dom-events vue.js

14
推荐指数
3
解决办法
2万
查看次数

我可以使用insertAdjacentHTML插入DOM元素吗?

insertAdjacentHTML 需要2个参数:

  • 位置("beforebegin","afterbegin","beforeend","afterend")
  • html(将从文本转换为DOM)

我可以将DOM元素作为第二个参数传递吗?

html javascript dom

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

检测 Vue 3 中 modelValue 的更改

有没有办法检测自定义组件中 modelValue 的更改?我想将更改推送到所见即所得编辑器。

我尝试监视 modelValue,但发出 modelValue 更新触发了该监视,从而创建了循环数据流。

代码:

export default {
  props: ['modelValue'],
  watch: {
    modelValue (val) {
      this.editor.editor.loadHTML(val)
    }
  },
  mounted () {
    this.editor.editor.loadHTML(val)
    this.editor.addEventListener('trix-change', 
      (event) => this.$emit('update:modelValue', event.target.value))
  }
}
Run Code Online (Sandbox Code Playgroud)
<TextEditor v-model="someHtml"></TextEditor>
Run Code Online (Sandbox Code Playgroud)

vuejs3

12
推荐指数
2
解决办法
4万
查看次数