【发布时间】:2016-06-23 20:24:56
【问题描述】:
我有一个简单的 AJAX 脚本,我很好奇为什么该参数在 $() 块之外不起作用:
var loadWork = function(el) { //element which href will be used
var url = $(el).attr('href'); //it doesn't work if 'el' is not in $()
$.get(url, function(data) {
$('#work-gallery').html(data);
});
}
$(document).ready(function() {
loadWork('#work ul li a[href="includes/wdes.html"]')
$('#work ul li a').click(function(evt) {
evt.preventDefault();
var element = $(this);
loadWork(element);
});
});
loadWork 函数的 el(元素的缩写)参数需要在 *var url = ...* 表达式中的 $() 内。为什么会这样,当我在函数调用中将它作为变量或文字元素传递时?
【问题讨论】:
-
因为它需要在 $() 中才能工作?为什么不想使用它?
-
因为
el是一个字符串。 -
您的问题实际上是 “为什么 DOM 元素的行为不像 jQuery 对象?” 答案是“因为它们不是。”
-
@RonenCypis 我怀疑你已经看到
$(this)通过element传递给loadWork,并忽略了对loadWork的第一次调用,它正在传递一个字符串,就像我做的那样从:)开始 -
@JamesThorpe 正确!
标签: javascript jquery frontend