如何从按钮触发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){})上的工

我一直在从谷歌下载引导树列表片段

它有如下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){})
上的工作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,实际上,我想要创建的是一个简单的列表视图,它能够根据我打开的内容显示和隐藏。我把我的简单代码放在上面