触发方法在jQuery中不起作用
Posted
技术标签:
【中文标题】触发方法在jQuery中不起作用【英文标题】:trigger method not working in jQuery 【发布时间】:2018-01-05 05:03:16 【问题描述】:我有一个页面,其中包含大约 100 个这样的 div。
<div id="ListItem_JBEEB_847">
<span title="-HD">
<span>F</span>
<span style="pointer-events: none;">-HD</span>
</span>
</div>
ID 有不同的编号。我正在尝试通过jQuery一一点击这个div/或垃圾邮件。所以,我做了一个这样的循环..
$('div').each(function()
div = $(this).attr('id');
if(div)
if(div.includes('ListItem_JBEEB'))
get_div = jQuery("#" + div).trigger('click');
);
上面的代码应该可以工作,但由于某种原因它不能工作。它适用于样式和所有其他 DOM 操作,例如通过更改文本颜色
jQuery("#" + div).css('color': 'red')
所以循环没问题,我也尝试使用 jQuery("#" + div).find('span').trigger('click')
来定位跨度,但没有任何反应。
顺便说一句:在网站上,如果您单击任何 div,会立即向您显示更多信息,但是没有任何变化,我不确定触发点击是否有效
【问题讨论】:
div 中有 2 个跨度,您是否有点击事件,您应该更具体地选择跨度 我不知道跨度是否触发了效果,但我只是点击了 div ......没有办法告诉我点击的是哪个元素..但我确实点击了div 并且它有效。如果跨度有填充,并且有一种清晰的方法可以将跨度与 div 分开,我将能够知道我正在点击哪个 el @gurradio @adeneo 但我能够简单地创建一个测试 btn 一个新页面,并且能够通过trigger()
点击 btn ...
我删除了那条评论,我不知道你在做什么,但同样,trigger()
不一定和点击一样,它只是触发与 jQuery 绑定的事件处理程序。跨度>
作为旁注,您的整个代码都可以替换为$('div[id^="ListItem_JBEEB"]').trigger('click')
【参考方案1】:
这是您的代码的更新版本。除了jQuery("#" + div).trigger('click')
,您可以使用$(this).trigger('click')
并单独定义click
事件应发生的情况。
$(document).ready(function()
$('div').each(function()
div = $(this).attr('id');
if (div && div.includes('ListItem_JBEEB'))
$(this).trigger('click');
);
);
$('div').on('click', function()
console.log($(this).attr('id') + ' got clicked..');
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="ListItem_JBEEB_847">
<span title="-HD">
<span>F</span>
<span style="pointer-events: none;">-HD</span>
</span>
</div>
<div id="ListItem_JBEEB_848">
<span title="-HD">
<span>F</span>
<span style="pointer-events: none;">-HD-1</span>
</span>
</div>
<div id="ListItem_JBEEB_849">
<span title="-HD">
<span>F</span>
<span style="pointer-events: none;">-HD-2</span>
</span>
</div>
【讨论】:
+1 代码。但我想它应该可以工作,但由于某种原因它没有。我打开控制台并在这个网站上尝试过ephremtube.com/mp3.php 并没有打开文件夹【参考方案2】:你必须在调用它之前初始化点击事件,你必须在调用它之前检查特定的点击事件是否已经初始化,否则它不会执行点击事件。 举例
// THIS WILL WORK
$(document).ready(function()
jQuery("#ListItem_JBEEB_847").click(function()
alert('a');
);
$('div').each(function()
div = $(this).attr('id');
if(div)
if(div.includes('ListItem_JBEEB'))
jQuery("#" + div).click();
);
);
// THIS WILL NOT WORK
$(document).ready(function()
$('div').each(function()
div = $(this).attr('id');
if(div)
if(div.includes('ListItem_JBEEB'))
jQuery("#" + div).click();
);
jQuery("#ListItem_JBEEB_847").click(function()
alert('a');
);
);
【讨论】:
+1 代码。但我想它应该可以工作,但由于某种原因它没有。我打开控制台并在这个网站上尝试过ephremtube.com/mp3.php 并没有打开文件夹以上是关于触发方法在jQuery中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
jQuery ContextMenu 事件在 IOS 8.2 中不起作用
jQuery .append() 在 IE、Safari 和 Chrome 中不起作用