我仍然是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) 所以我有一个喜欢的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)
但都没有得到它.偏移量相对于文档而言,位置相对于父级而不是指定的元素.
我该怎么做?谢谢
我有一个使用Makefile构建的C++库.直到最近,所有的源都在一个目录中,Makefile做了这样的事情
SOURCES = $(wildcard *.cpp)
工作得很好.
现在我添加了一些子目录中的源代码subdir
.我知道我能做到这一点
SOURCES = $(wildcard *.cpp) $(wildcard subdir/*.cpp)
但我正在寻找一种避免subdir
手动指定的方法,即wildcard
查看子目录,或以某种方式生成子目录列表并使用多个wildcard
函数扩展它.此时,具有非递归解决方案(即,仅扩展第一级)将没有问题.
我没有找到任何东西 - 我最好的猜测是find -type d
用来列出子目录,但感觉就像一个黑客.有没有内置的方法来做到这一点?
在这个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) 我想inherit
用calc()
这样的:
#foo {
animation-duration: 10s;
}
#foo > .bar {
animation-duration: calc(inherit + 2s); /* =12s */
}
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.
是浏览器错误还是规格?
我正在尝试使用php的file_get_content('a url');
例如,如果网址中包含"&",那就是问题
file_get_contents('http://www.google.com/?var1=1&var2=2')
它会自动发出请求 www.google.com/?var1=1&var2=2
我该如何防止这种情况发生?
当我做
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
谢谢.所有答案都很有帮助,并提供了我想要的.我赞成他们中的大部分.
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
?
insertAdjacentHTML
需要2个参数:
"beforebegin"
,"afterbegin"
,"beforeend"
,"afterend"
)我可以将DOM元素作为第二个参数传递吗?
有没有办法检测自定义组件中 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) javascript ×4
dom ×2
dom-events ×2
jquery ×2
ajax ×1
css ×1
css-calc ×1
ecmascript-6 ×1
html ×1
inheritance ×1
makefile ×1
php ×1
response ×1
vue.js ×1
vuejs3 ×1
xml ×1