<script>
$( document ).ready(function() {
//for example item is the button that will be clicked and panelContent is the panel that will be shown
$('#item').click({param1: '#panelContent'}, toggleObjects);
// i tried this also and it doesn't work
$('#item').click(toggleObjects('#panelContent'));
});
var currentObject;
function toggleObjects(theObject) {
//theObject is the id of the panel
if(currentObject===null)
{
currentObject=theObject;
$(currentObject).show();
}
if(currentObject===theObject)
{
$(theObject).toggle();
}
if(currentObject!==theObject)
{
$(currentObject).hide();
currentObject=theObject;
$(currentObject).show();
}
console.log( 'executed!' );
}
</script>
如果我在html中的按钮上放置onclick =“toggleObjects('#panelContent')”它工作正常,但我想使用jquery事件监听器。
我应该如何使用.click事件传递函数以及参数? 或者除了html onclick版本之外还有其他解决方案吗?
请原谅我可怜的英语! 提前感谢您对此事的关注。
答案 0 :(得分:0)
你想要的是一个内联函数 -
$('#item').click(function() { toggleObjects('#panelContent'); } );
或者定义一个使用特定参数调用toggleObjects函数的新函数 -
var toggleObjectsWithPanelContent = function() {
toggleObjects('#panelContent');
};
$('#item').click(toggleObjectsWithPanelContent);
你与$('#item').click(toggleObjects('#panelContent'));
,
但是toggleObjects('#panelContent')
位实际上是一个函数调用,而不是对函数的引用,所以你实际上是将toggleObjects的返回值传递给click()fn。 (在这种情况下,返回值为undefined
)。
答案 1 :(得分:0)
你说得对,但如果你这样写的话
<input type="button " id="item" onclick="toggleObjects('panelContent');" />
使用#传递id
而不是 ID。
然后它将在您的脚本中点击函数toggleObjects
,接受您传递的参数。
如果你想使用 jQuery click事件处理程序,那么执行以下操作: -
$("#item").click(function(){
toggleObjects('panelContent');
});
如果您的按钮是在DOM
中动态生成的,请使用点击 event handler
,如下所示: -
$("#item").on('click',function(){
toggleObjects('panelContent');
});
请记住,不要将id
与#
一起传递。我可以看到你正在将id
与 toggleObject()中的 currentObject 进行比较,我希望这不会以#
开头
但是如果 currentObject 以#
开头,那么无论你在HTML
中写的是什么都适用于jQuery,而不是做 toggleObjects(&# 39; panelContent&#39); 在click
和on-click
EVENT HANDLERS 内,只需在panelContent的开头添加#
( toggleObjects(&#39;# panelContent&#39;); )
谢谢!