标签: javascript-events

用jQuery获取"onclick"的值?

是否可以通过jQuery获取A标签的onClick属性的当前值?

例如,我有:

<a href="http://www.google.com" id="google" onclick="alert('hello')">Click</a>
Run Code Online (Sandbox Code Playgroud)

我想得到onclick代码,以便我可以存储它供以后使用(因为我将稍微更改onclick事件).

有可能做这样的事情:

var link_click = $("#google").onclick;
Run Code Online (Sandbox Code Playgroud)

要么:

var link_click = $("#google").click;
Run Code Online (Sandbox Code Playgroud)

所以,稍后在我的代码中,我可以重新应用该代码,或者必要时使用eval()它?

javascript jquery javascript-events

28
推荐指数
4
解决办法
10万
查看次数

如何使用JavaScript检测地址栏更改?

我有一个Ajax繁重的应用程序,可能有一个URL,如

http://example.com/myApp/#page=1
Run Code Online (Sandbox Code Playgroud)

当用户操作站点时,地址栏可以更改为类似的内容

http://example.com/myApp/#page=5
Run Code Online (Sandbox Code Playgroud)

无需重新加载页面.

我的问题是以下顺序:

  1. 用户为第一个URL添加书签.
  2. 用户操纵应用程序,使得第二个URL是当前状态.
  3. 用户单击在步骤1中创建的书签.
  4. 地址栏中的网址从http://example.com/myApp/#page=5更改为http://example.com/myApp/#page=1,但我不知道如何检测变化发生了.

如果我检测到某个更改,JavaScript会对其进行操作.

javascript address-bar javascript-events

28
推荐指数
3
解决办法
4万
查看次数

如何在Javascript中创建自定义事件类?

如何创建类似于ActionScript的自定义事件类?我的意思是,我可以使用一个类来发起我自己的事件,发送必要的数据.

我不想使用像YUI或jQuery这样的第三方库来实现它.我的目标是能够发送看起来像这样的事件.

document.addEventListener("customEvent", eventHandler, false);

function eventHandler(e){
    alert(e.para1);
}

document.dispatchEvent(new CustomEvent("customEvent", para1, para2));
Run Code Online (Sandbox Code Playgroud)

请不要第三方库解决方案.

javascript events event-handling javascript-events actionscript-3

28
推荐指数
2
解决办法
2万
查看次数

使用JavaScript来防止后来的`<script>`标记被评估?

这是一个奇怪的用例,但我有我的理由:

我希望能够写作

<script type="text/javascript" src="first.js"></script>
<script type="text/javascript" src="second.js"></script>
Run Code Online (Sandbox Code Playgroud)

在我的标记中,并使用代码first.js,防止或延迟执行second.js.这可能在任何浏览器中都可以吗?如果first.js内联的内容怎么办?(如果有帮助,则假设第二个脚本标记具有id属性.)

由于我得到了几个错过我所得到的答案,我应该澄清一下:

  1. 解决方案必须完全在内first.js.任何需要更改页面原始HTML的内容second.js都是不可接受的.
  2. 可以接受的加载second.js通过Ajax以及使用执行它eval.这很容易.困难的部分是阻止立即执行second.js.
  3. 假设你不知道里面有什么second.js.因此,您不能仅second.js使用no-op函数替换每个调用的全局函数.(另外,这几乎肯定会导致错误.)

如果你知道一个解决方案适用于某些浏览器但不适用于其他浏览器,我很乐意听到它.

示例:为了使这更具体,让我们说代码

<script type="text/javascript">
  function func() {
    window.meaningOfLife = 42;
    window.loadSecond();
  };
  setTimeout(func, 10);
</script>
Run Code Online (Sandbox Code Playgroud)

在两个script包含之前,second.js包含该行

if (window.meaningOfLife !== 42) {throw new Error();}
Run Code Online (Sandbox Code Playgroud)

first.js应该能够通过延迟second.js执行直到window.loadSecond运行来防止此错误.(假设执行的window.loadSecond也是first.js.)它是不是不准碰window.meaningOfLife …

html javascript javascript-events

28
推荐指数
4
解决办法
2万
查看次数

自动放大到表格后如何触发iPhone缩小?

我有一个使用jQuery提交搜索的Web表单.表单本身不会触发提交事件,因为我抓住并删除它(这是一个更大,更复杂的表单的所有部分,我正在使用渐进增强来添加此功能).

在iPhone上,浏览器一旦聚焦,就会自动放大我的搜索输入.在"输入"键盘事件中,搜索是通过javascript执行的,我模糊了输入,它消除了屏幕上的iPhone键盘,但浏览器仍然放大到输入区域.

有没有办法通过javascript以编程方式再次缩小回到初始视口区域?

编辑:搜索执行没有重定向,这通常会在新页面加载时重置视口 - 所有内容都发生在这里的一个页面上.

javascript iphone jquery javascript-events

28
推荐指数
3
解决办法
2万
查看次数

knockoutjs - click事件的多个绑定

我想知道是否可以在knockout.js中的事件上创建多个绑定

例:

<span data-bind="click: function1 function2, attr: {}"></span>
Run Code Online (Sandbox Code Playgroud)

javascript javascript-events knockout.js

28
推荐指数
1
解决办法
3万
查看次数

用于检测元素位置何时更改的jQuery事件

我想知道是否有一个jQuery事件,我可以用它来确定特定DIV的top属性何时发生了变化.

例如,我在DIV之上有隐形内容.当该内容变得可见时,DIV向下移动.我想捕获该事件,然后使用该offset()函数来获取X/Y坐标.

javascript jquery events javascript-events

27
推荐指数
2
解决办法
3万
查看次数

使用Javascript/jQuery打开Select?

有没有办法使用Javascript(和jQuery)打开一个选择框?

<select style="width:150px;">
    <option value="1">1</option>
    <option value="2">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc arcu nunc, rhoncus ac dignissim at, rhoncus ac tellus.</option>
    <option value="3">3</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我必须打开我的选择,因为bug.所有版本的IE(6,7,8)都削减了我的选择.据我所知,这没有css bugfix.目前我尝试执行以下操作:

var original_width = 0;
var selected_val = false;

if (jQuery.browser.msie) {
    $('select').click(function(){
        if (selected_val == false){
            if(original_width == 0)
                original_width = $(this).width();

            $(this).css({
                'position' : 'absolute',
                'width' : 'auto'
            });
        }else{
            $(this).css({
                'position' : 'relative',
                'width' : original_width
            });
            selected_val = false;
        }
    });

    $('select').blur(function(){
        $(this).css({
            'position' : 'relative',
            'width' : …
Run Code Online (Sandbox Code Playgroud)

javascript jquery javascript-events

27
推荐指数
4
解决办法
7万
查看次数

Chrome中的Keydown Simulation通常会触发,但不会触发正确的键

我想在html页面中模拟给定textarea元素上的keydown事件.因为我正在使用chrome,所以我调用initKeyboardEvent了我的变量,并将我想要输入的keyCode传递给了textarea.这是我尝试过的:

var keyEvent = document.createEvent('KeyboardEvent');
keyEvent.initKeyboardEvent('keydown', true, false, null, 0, false, 0, false, 77, 0);
inputNode.dispatchEvent(keyEvent);
Run Code Online (Sandbox Code Playgroud)

在这段代码中,我正在键入字母,m但textarea只获取keyCode 13,这是Enter键.所以,我尝试了一个我在网上看到的覆盖代码,它将值设置为keyCodeVal,但没有成功

var keyEvent = document.createEvent('KeyboardEvent');
Object.defineProperty(keyEvent, 'keyCode', { 
                         get : function() {
                                 return this.keyCodeVal;
                         }
                        });
keyEvent.initKeyboardEvent('keydown', true, false, null, 0, false, 0, false, 77, 0);
keyEvent.keyCodeVal = 77;
inputNode.dispatchEvent(keyEvent);
Run Code Online (Sandbox Code Playgroud)

有谁知道如何设置keyCode值?

javascript google-chrome javascript-events

27
推荐指数
2
解决办法
5万
查看次数

使用纯JavaScript处理"onclick"事件

所以这是非常简单的,但我仍然是相当新的JavaScript,只是找到了JSFiddle.我正在尝试使用getElementById()禁用和启用按钮来查找元素.我错过了什么?

<form name="frm" > 
  <div id="chkObj"> 
    <input type="checkbox" name="setChkBx" onclick="basicList.modifyAndEnableButton(this)"></input>        
</div>
<div id="Hello"> 
    <input type="button" name="btn" value="Hello"></input>        
</div>
Run Code Online (Sandbox Code Playgroud)


这是我用来添加复选框的列表,因为会有多个复选框:

 var basicList = {
    'items': {},
    'modifyAndEnableButton': function(obj1) {
        var element = document.getElementsByName("btn");
        if (obj1.checked == true && element.getAttribute('disabled') == false) {
            element.getAttribute('disabled') = true;
            this.addRecord(obj2);
        } else if (element.getAttribute('disabled') == true) {
            if (hasItems == false) {
                element.getAttribute('disabled') = false;
            }
        } 
    }
};
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/Arandolph0/E9zvc/3/

在此先感谢您的帮助.

html javascript events event-handling javascript-events

27
推荐指数
2
解决办法
7万
查看次数