我是移动优化网站。在进入下一页之前,您可以通过单击选择包含不同包的页面。默认情况下,选择了包1但我在移动设备上隐藏了此选项。如果您不选择其他选项并继续操作,则会产生问题,因为您无意中选择了您无法看到的包。
为了解决这个问题,我希望默认选择另一个(可见)包。我不想编辑原始的javascript或后端,我更愿意我的代码是分开的。
我尝试过以下代码,使用jQuery按用户“点击”该选项。 Tt适用于演示,但不适用于实际网站。我已经尝试在延迟和dom读取和窗口加载后运行它。我担心我无法发布网站或使实际代码可见。
$('div').click();
答案 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来强调差异。