Mis*_*a M 3 html javascript jquery
我正在一个显示多个条目的网站上工作.每个条目都可以展开/折叠,显示更多/更少的信息.每个条目的HTML如下所示:
<div id="entry-1"><div>some text</div><div><img></div></div>
<div id="entry-2"><div>some text</div><div><img></div></div>
<div id="entry-3"><div>some text</div><div><img></div></div>
Run Code Online (Sandbox Code Playgroud)
"entry-{1,2,3}"中的1,2,3是每个帖子的id.如何将click事件绑定到每个div?
我试过做:
$('div[id^="entry-"]').click( myFunc($(this)) ) ;
Run Code Online (Sandbox Code Playgroud)
但是当我点击时,没有任何反应,即使页面加载时,点击也不会触发,执行JavaScript.
试着转动你的
$('div[id^="entry-"]').click( myFunc($(this)) ) ;
Run Code Online (Sandbox Code Playgroud)
成
$('div[id^="entry-"]').click( function(){ myFunc($(this)); } ) ;
Run Code Online (Sandbox Code Playgroud)
问题是this关键字.在这段代码中......
$('div[id^="entry-"]').click( myFunc($(this)) );
Run Code Online (Sandbox Code Playgroud)
...该this值不指向已单击的DOM元素,而是指向全局对象(窗口).
这可行:
$('div[id^="entry-"]').click(function() {
myFunc($(this));
});
Run Code Online (Sandbox Code Playgroud)
正如@JCOC指出的那样,你正在调用这个函数.
在原始代码中,myFunc($(this))将立即调用,并将其返回值传递给click()方法.
因此,如果您的函数返回undefined,例如,结果代码将是这样的:
$('div[id^="entry-"]').click(undefined);
Run Code Online (Sandbox Code Playgroud)
......显然不起作用.
我在这里看到的问题是你正在执行这个功能.你可以这样做:
$('div[id^="entry-"]').click( myFunc ) ;
function myFunc(){
var some = $(this);
...
}
Run Code Online (Sandbox Code Playgroud)
另外,我之前建议你使用类:
<div id="entry-1" class="entry"></div>
<div id="entry-2" class="entry"></div>
//JS Selector:
$("div.entry")
Run Code Online (Sandbox Code Playgroud)
总而言之:
$('div.entry').click( myFunc );
Run Code Online (Sandbox Code Playgroud)