我是jQuery的新手,我正在尝试理解捕获和冒泡的概念.
我已经阅读了很多文章,但大多数都描述了Javascript的事件传播.
让我们假设我们有以下HTML代码:
<div id="outter">
outter
<div id="inner">
inner
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
捕获是我们沿着DOM元素走下去的阶段,冒泡就是我们上升的时候.
在Javascript中,您可以决定使用哪种方式(使用true或false参数):
element.addEventListener('click',doSomething,true) --> capture phase
element.addEventListener('click',doSomething,false) --> bubble phase
Run Code Online (Sandbox Code Playgroud)
有没有类似的jQuery来表示除JavaScript方式之外的哪种方式?
jQuery也使用默认阶段吗?比如泡泡?
因为我使用以下代码来测试这个:
CSS
<style>
div {
border: 1px solid green;
width: 200px;
}
</style>
Run Code Online (Sandbox Code Playgroud)
jQuery的
<script>
$(document).ready(function(){
$('div').click(function(){
$(this).animate({'width':'+=10px'},{duration: 3000})
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
看来,当我点击outter div时,只有那个div动画到更大的div.当我点击内部div时,两个div都会生成更大的div.
我不知道我是不是错了,但是这个测试表明默认的浏览器传播方法是冒泡的.
如果我错了,请纠正我.
我想构建一个下拉菜单,如果第一个选择数据属于特定类别,则将显示第二个选择。
正如您在下面看到的,第一个选择将是关于国家的。如果所选国家有州,则将显示第二个下拉选项,其中包含该国家的州。
1)是否有一个标签(在我的代码“xyz”中)我可以用它来区分“州”和“无州”类别中的国家?如果有,我如何读取“xyz”标签的值?
2)如果我使用:
<option class="no-state" value="Germany">Germany</option>
Run Code Online (Sandbox Code Playgroud)
然后使用 jQuery 读取它会给我德国西班牙的价值(这是正确的,但不是我想要的)
$('.no-state').val();
Run Code Online (Sandbox Code Playgroud)
<div id="country">
<select>
<option xyz="no-state" value="Germany">Germany</option>
<option xyz="state" value="USA">USA</option>
<option xyz="no-state" value="Spain">Spain</option>
</select>
</div>
<div id="state" style="display:none" >
<select>
<option value="Utah">Utah</option>
<option value="New York">New York</option>
<option value="California">California</option>
</select>
</div>
Run Code Online (Sandbox Code Playgroud)
$(document).ready(function(){
$('#country').change(function() {
if (the value of "xyz" tag is === 'no-state')
{
$('div#state').hide();
}
else
{
$('div#state').show();
}
});
});
Run Code Online (Sandbox Code Playgroud)
我能做些什么来解决这个问题?
谢谢。
我正在尝试上传一个 CSV 文件,我想在执行其他任何操作之前对其进行验证。所以我在 FormRequest 中使用以下代码:
public function rules()
{
return [
'csvFile' => 'required|file|mimes:csv'
];
}
Run Code Online (Sandbox Code Playgroud)
我用于上传文件的表格是:
<form action="{{ route('uploadFile') }}" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
<div class="form-group">
<label for="fileToUpload">CSV File to upload</label>
<input name="csvFile" type="file" class="form-control" id="fileToUpload" placeholder="Select file">
</div>
<button type="submit" class="btn btn-primary">Upload</button>
</form>
Run Code Online (Sandbox Code Playgroud)
问题是它不起作用。尝试使用 getMimeType() 检查我的 test.csv 文件的 MIME 类型,我得到:
"text/plain"
Run Code Online (Sandbox Code Playgroud)
但是如果我使用 getClientMimeType() 我得到:
"text/csv"
Run Code Online (Sandbox Code Playgroud)
从我读到的是:
客户端 MIME 类型 ( getClientMimeType() ) 是从上传文件的请求中提取的,因此不应将其视为安全值。
对于受信任的 MIME 类型,请改用getMimeType()(根据文件内容猜测 MIME 类型)。
显然,我应该使用 getMimeType(),但它不起作用(至少在大多数情况下)。
我试图通过这样做来模仿这一点: …
我正在构建一个使用Cloud Firestore(不是Firebase实时数据库)作为后端/数据库的iOS应用。
Google试图将新项目推向Cloud Firestore,老实说,拥有新项目的开发人员应选择使用Firestore(更好的查询,更容易的扩展等)。
我的问题与任何关系数据库开发人员在切换到无SQL数据库时一样:数据建模
我有一个非常简单的场景,我将首先解释如何使用MySQL配置它:
我想在表格视图中显示帖子列表,并且当用户单击一个帖子以展开并显示该帖子的更多详细信息时(假设是编写该帖子的用户)。听起来很简单。
在关系数据库世界中,我将创建2个表:一个名为“ posts ”的表和一个名为“ users ”的表。在“ posts ”表中,我将具有一个指示用户的外键。问题解决了。
可怜的巴里,从来没有时间写帖子:(
使用这种方法,我可以轻松实现我所描述的内容,而且,如果用户更新了他/她的详细信息,则只需在一个地方进行更改即可完成。
现在让我们切换到Firestore。我想将RDBMS的表名视为Firestore的集合,并将表的内容/结构视为文档。
在我看来,我有2种可能的解决方案:
解决方案1:
遵循与RDBMS相同的逻辑:在posts集合内,每个文档应具有一个名为“ userId”的键,其值应为该用户的documentId。然后通过获取帖子,您将认识用户。第二次查询数据库将获取所有与用户相关的详细信息。
解决方案2:
数据重复:每个帖子都应该有一个映射(嵌套对象),该映射具有名为“ user”的键,并包含所需的任何用户值。这样,用户数据将被附加到它写的每个帖子上。
从RDBMS的规范化领域来看,这听起来很可怕,但是许多no-SQL文档都鼓励重复(?)。
我在第二种解决方案中看到的唯一好处是,您可以在一个调用中同时获取帖子和用户数据。
对于这种简单但非常常见的情况,还有其他解决方案吗?
ps:对我轻松一点,第一次使用no-sql dev。
提前致谢。