Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检测href单击_Javascript_Jquery - Fatal编程技术网

Javascript 检测href单击

Javascript 检测href单击,javascript,jquery,Javascript,Jquery,好的,我已经尝试了几天,想弄清楚如何检测用户点击,并为变量分配新属性。我尝试了几种不同的方法,但大多数都不起作用 到目前为止,我有这个,这是相当自我解释 var settings = { objSlideTrigger: '#one', // link button id objSlidePanel: '#content-one' // slide div class or id }; if(document.getElementById('#one').cli

好的,我已经尝试了几天,想弄清楚如何检测用户点击,并为变量分配新属性。我尝试了几种不同的方法,但大多数都不起作用

到目前为止,我有这个,这是相当自我解释

var settings = {
    objSlideTrigger: '#one', // link button id
    objSlidePanel: '#content-one' // slide div class or id       
};


if(document.getElementById('#one').click) {
 var setup = settings;
    setup.objSlideTrigger = '#one',
    setup.objSlidePanel = '#content-one'
};

if(document.getElementById('#two').click) {
 var setup = settings;
    setup.objSlideTrigger = '#two',
    setup.objSlidePanel = '#content-two'
};
当用户单击页面上的href时,我希望javascript能够检测到它,并将正确的设置放在settings变量中,供其余代码使用。 我有两个问题,第一个问题是,我必须将条件语句至少复制十次,因此无论如何都要压缩/简化代码

其次,在javascript中检测到Href click时,我是否必须为html中的实际元素指定onclick值

再次感谢

使用jQuery 假设您希望使用jQuery,因为您已将其包含在顶部,请使用:

$(document).on('click', '#one', function( event ) {
   //Do Code here
   //For #one click event
});
不过,为了防止干燥,请使用类使其更通用:

<div class="updatesettings" id="one">One</a>
<div class="updatesettings" id="two">Two</a>

<script>
    $(document).on('click', '.updatesettings', function( event ) {
       //Do Code here
       //For all .updatesettings click event
       alert( $(this).attr('id') );
    });
</script>
然后要侦听多个,请按类使用(尽管并非所有IE版本都可以侦听):

var waitiedclickevent=function(){
//类单击
}
var WaitingClick=document.getElementsByClassName('clickme');
对于(变量i=0;i
你的解决方案

一个
两个
/**
*获取单击的元素的ID
*它是存储的数据内容字符串。
**/
$('.updatesettings')。在('单击')上,函数(事件){
var Id=$(this.attr('Id'),
Content=$(this).data('Content'),
设置=设置,
setup.objSlideTrigger=Id,
setup.objSlidePenl=内容;
控制台日志(设置);
});

$(document).ready(function(){}
然后使用
document.getElmentById('')。单击“
”?:oThanks为了指出这一点,我在编辑时忘了删除它。你说的是元素吗?不能单击hrefs,可以单击(锚定)元素具有href属性您的编辑很奇怪,您是使用jQUery还是纯JavaScript?是的,我指的是“锚定标记”,我将它们称为href。这与要求的不完全一样,有几个元素可能类似于#1、#2、.................#10个单击处理程序each@BeaniiejQuery是JavaScript,因此您可以同时使用这两种语言总的来说,只有一些事情需要考虑,比如不尝试访问jQuery对象上的本机元素属性。例如,
$('#checked')不能这样做.checked
以查看ID为checked的复选框元素是否已实际选中。我会的,谢谢你们的输入。你们已经解释了为什么我在过去5-6天里一无所获……:)我使用了
,因为
没有预期的浏览器行为,与
不同的是,它们会将您带到另一个页面,因此您必须使用JavaScript来防止这种情况。使用
将允许您完全控制单击它时要执行的操作,例如您的示例-update
setup
变量。将其添加到click活页夹的开头,查找任何带有
'out'
类的类,并告诉它回家=)
var OnOneClick = function() { 
  // Your click handler
};

var OneClick = document.getElementsById("#one");
OneClick.addEventListener('click', OnOneClick, false);
var AwaitedClickEvent = function() {
    //Class Click
}

var WaitingClick = document.getElementsByClassName('clickme');
for (var i = 0; i < WaitingClick.length; i++) {
   var current = WaitingClick[i];
   current.addEventListener('click', AwaitedClickEvent, false);
}
<!-- Links with ID & Content -->
<div class="updatesettings" id="one" data-content="content-one">One</a>
<div class="updatesettings" id="two" data-content="content-two">Two</a>

<script>
    /**
     *   Get the clicked element's ID
     *   and it's stored data-content string.
    **/
    $('.updatesettings').on('click', function( event ) {
         var Id = $(this).attr('id'),
             Content = $(this).data('content'),
             setup = settings,
             setup.objSlideTrigger = Id,
             setup.objSlidePenl = Content;

         console.log( setup );
    });
</script>