如何从按钮触发javascript函数
我一直在从谷歌下载引导树列表片段 它有如下javascript函数如何从按钮触发javascript函数,javascript,php,jquery,html,twitter-bootstrap,Javascript,Php,Jquery,Html,Twitter Bootstrap,我一直在从谷歌下载引导树列表片段 它有如下javascript函数 $(函数(){ $('.tree li')。在('click',函数(e)上{ var children=$(this.find('>ul>li'); if(children.is(“:visible”))children.hide('fast'); else儿童。show('fast'); e、 停止传播(); }); });您创建的showHide()函数无法工作,因为它使用的类似于('click',函数(e){})上的工
$(函数(){
$('.tree li')。在('click',函数(e)上{
var children=$(this.find('>ul>li');
if(children.is(“:visible”))children.hide('fast');
else儿童。show('fast');
e、 停止传播();
});
});
您创建的showHide()
函数无法工作,因为它使用的类似于('click',函数(e){})
上的工作jQuery。但是,在showHide()
中,此
在
$('.tree li').on('click', function (e) {
// some code
});
此
引用涉及函数的对象。这个对象是一个树节点,它与选择器'.tree li'
匹配
因此,如果您想让showHide()
函数工作,您需要准确地告诉它在哪个元素上执行。查找('>ul>li')
并隐藏可见的子元素。
你有两种方法。一种方法是将函数作为参数传递给元素的选择器,如下所示:
function showHide(elementSelector){
var children = $(elementSelector).find('> ul > li');
if (children.is(":visible")) children.hide('fast');
else children.show('fast');
};
另一种方法是对选择器进行“硬编码”,这可能不太实际
function showHide(){
var children = $('.someClass').find('> ul > li');
if (children.is(":visible")) children.hide('fast');
else children.show('fast');
};
您的元素选择器(elementSelector
在我的第一个示例中,以及'.someClass'
在我的第二个示例中)需要是有效的jQuery选择器,这取决于您,找到一个逻辑来标记元素,这样您就可以使用这样的选择器来识别它们,因为我们不知道您的背景逻辑,而且目前不容易从HTML中选择唯一的节点,因为它们没有ID。给他们唯一的ID可能是识别他们的好方法
至于您的第二个问题e
是触发函数的jQuery.Event
,并且e.stopPropagation()
防止任何其他事件处理程序进一步收到关于此事件的通知(请参阅)“我需要树列表只显示活动列表,因此我需要从列表中触发它,并检查此列表是否处于活动状态”“这不清楚。什么是活动列表?@dfsq,系统将决定它,例如,ill put。我需要的是将上面的javascript代码更改为一个函数,以便根据条件显示树的隐藏分支?你能不能根本不渲染它?@dfsq抱歉,我刚刚明白你的意思,是的,第一次,树列表将全部重新渲染,然后我会检查,如果列表中的值与我给定的值匹配,我会将其设置为显示,如果未设置为hide@dfsq或者你还有别的想法?谢谢Jey,实际上,我想要创建的是一个简单的列表视图,它能够根据我打开的内容显示和隐藏。我把我的简单代码放在上面