在没有“;可能存在严重违规行为&”;
Use this in a function without "Possible strict violation."
本文关键字:存在 更新时间:2023-09-26
我正在编写一个Jquery函数,该函数在"click"事件上调用。该函数需要使用this
,因此可以引用单击的元素:
var allPanels = $('[data-display-mode~="accordion"] .unit-text').hide();
$('[data-display-mode~="accordion"] .unit').addClass("closed");
function accordion($this, $type) {
var $root;
var $body;
var $this = $(this);
//Change variables depending on function
if ($type === "stack") {
$root = $(this).parents(".unit");
$body = $(this).parents(".unit").find('.unit-text');
} else if ($type === "panel") {
$root = $(this);
$body = $(this).find('.unit-text');
}
if ($root.hasClass('closed')) {
allPanels.slideUp().parents(".unit").removeClass('open').addClass('closed');
$root.removeClass('closed').addClass('open');
$body.slideDown();
} else {
$root.removeClass('open').addClass('closed');
$body.slideUp();
}
}
// Call function on Click
$('[data-display-mode~="accordion"][data-display-mode~="stack"] .unit-heading').click(accordion("stack"));
$('[data-display-mode~="accordion"][data-display-mode~="panel"]').click(accordion("panel"));
});
我该怎么做?此外,JSlint说我的变量"可能有严格的违规行为"。我该怎么解决这个问题?
我在这里做了一个JSFiddle
我尝试过的步骤
- 使用此处提到的.apply(this)
- 将$this放入函数中,以便可以传入(如这里所述)
需要知道的是.click
需要一个函数引用。您正在做的是调用一个不返回任何函数引用的函数。
为了实现您想要的,您可以简单地使accordion
返回另一个函数。然后你将拥有你想要的一切:
function accordion($type) { //Removed the $this argument
return function(){ //That will be the function called when you click on the target
var $root;
var $body;
var $this = $(this);
//Change variables depending on function
if ($type === "stack") {
$root = $(this).parents(".unit");
$body = $(this).parents(".unit").find('.unit-text');
} else if ($type === "panel") {
$root = $(this);
$body = $(this).find('.unit-text');
}
if ($root.hasClass('closed')) {
allPanels.slideUp().parents(".unit").removeClass('open').addClass('closed');
$root.removeClass('closed').addClass('open');
$body.slideDown();
} else {
$root.removeClass('open').addClass('closed');
$body.slideUp();
}
}
}
Fiddle
如果您检查控制台,您会看到$type
正常。
相关文章:
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 用于检查数组中是否存在元素的javascript自定义方法
- 未捕获的类型错误:无法读取属性'name'即使它存在,也无法定义
- 正在将事件处理程序添加到不存在的类
- 是否存在React Native“;WEB代码安全防护”;
- 一个密码测试程序,如果存在空格,它会提醒用户
- 验证会话中是否存在对象's数组
- javascript如果图像不存在don't加载它
- 如何查找值是否存在于二叉树中
- IE9的HTML5 Canvas getImageData()函数存在问题
- 由于响应中不存在“Access Control Allow Origin”标头,跨域请求停止工作
- CORS-服务器端cookie没有保存在chrome浏览器上
- 检查是否存在使用chrome扩展的javascript库
- 是否存在Javascript Liferay Service库的文档?如何处理错误情况
- 测试mongo脚本中是否存在参数
- 存在每个时间元素的javascript事件
- JavaScript-如果以前不存在文本,如何从文本区域删除新行