使用jQuery单击div

时间:2012-12-21 16:42:15

标签: jquery

我是移动优化网站。在进入下一页之前,您可以通过单击选择包含不同包的页面。默认情况下,选择了包1但我在移动设备上隐藏了此选项。如果您不选择其他选项并继续操作,则会产生问题,因为您无意中选择了您无法看到的包。

为了解决这个问题,我希望默认选择另一个(可见)包。我不想编辑原始的javascript或后端,我更愿意我的代码是分开的。

我尝试过以下代码,使用jQuery按用户“点击”该选项。 Tt适用于演示,但不适用于实际网站。我已经尝试在延迟和dom读取和窗口加载后运行它。我担心我无法发布网站或使实际代码可见。

$('div').click();

http://jsfiddle.net/LZWjs/3/

4 个答案:

答案 0 :(得分:0)

您可以使用自定义事件来捕获click事件。只需触发点击

$(document).trigger('customClick');

然后赶上事件:

$(document).on('customClick', function () {
     // do whatever you want
});

答案 1 :(得分:0)

以下代码:

$('div').click(); 

会在每个div上执行点击事件,因此这可能不是您想要做的事情,它可能会多次调用您的选择代码,而且上帝知道还有什么。为了模拟用户的选择,您需要为div提供 ID trigger点击它。

$('#ID').click();

如果这不能解决您的问题,您可以随时在页面选择机制中插入一些console.logs或警报,以便跟踪触发的女巫事件。如果您不愿意分享您的代码,我可以帮助您。

答案 2 :(得分:0)

在移动设备上,您可以跳过渲染第一个不相关的选项,然后初始化表单并选择第一个可用选项。如果是单选按钮控件,则为:

$("ul.optionsList input.anOption:first").attr("checked", true)

...假设ul.optionsList是选项容器,anOption是无线电元素的类名。

答案 3 :(得分:0)

您的方法存在一些问题。

首先,正如Ivan所说,$('div').click();会导致点击事件在您网页中的每个<div>上引发,这不是您想要的。我已更新您的example以证明这一点。 Ivan建议您使用ID来明确选择要单击的包,这是正确的。例如:

<div id="package1">Hidden</div>
<div id="package2">Pick me</div>
<div id="package3">Another package</div>

<script>$('#package2').click();</script>

或者,您可以使用Javascript使用的任何方法来判断各种包之间的区别,以确定选择哪一个,包括CSS类,HTML5 数据 - 属性等。


其次,你是如何隐藏第一个选定的包裹的?或许类似于$('.selected').hide();的东西?为什么不完全从DOM中删除第一个包,然后在新的“第一个”包中触发click事件?例如:

$('.selected').remove();
$('.packages').first().click();

第三,您评论“该元素是一个链接但是href是javascript。”为什么要在<div>上触发点击事件呢?根据它的声音,您应该定位<a>元素。


第四,jQuery的click()功能只触发点击 事件。这与“使用jQuery”按用户单击“选项”不同。如果您的所有Javascript都在<a> href 属性中,只有当用户手动点击它时才会触发,而不是在触发点击事件时触发。我整理了一个example来强调差异。