1

我有以下功能,我想在页面加载时运行并在单击 div#trigger 时重新运行。当您单击 div#trigger 时,一切都很好。然而,在页面加载时,代码似乎有时可以工作,但有时会缩进错误的数量,并且警报(我只是为了调试目的而放入其中)永远不会触发。谢谢

  function textIndentFunc () {

     textString = $('#from-1 :selected').text();

     $('#hidden').text(textString);

     textWidth = $('#hidden').width();

     inputWidth = $('#from-1 select').width();

     indentMy = (inputWidth / 2) - (textWidth / 2);

    $('#from-1').css('text-indent',indentMy);

}

 $('#trigger').click(function(){
    textIndentFunc();
    alert('fire');
 });

textIndentFunc();

更新 - 我应该提到这段代码在 document.ready 上运行。

更新 - 将代码移动到 window.load 不会改变任何东西。

4

5 回答 5

2

像这样将函数调用包装在 document.ready 处理程序中......

$(function() {
    textIndentFunc();
});

这可以确保在尝试对它进行任何操作之前加载 DOM,否则您将在不同的时间得到不同的结果,具体取决于加载的内容和未加载的内容。

于 2012-05-14T15:46:05.333 回答
2

您的函数需要在 document.ready 调用中调用

$(document).ready(function() {
   textIndentFunc();
});
于 2012-05-14T15:46:22.797 回答
1

尝试如下

  $(document).ready(function () {
$('#trigger').click(function(){
    textIndentFunc();
    alert('fire');
 });
});

function textIndentFunc () {

     textString = $('#from-1 :selected').text();

     $('#hidden').text(textString);

     textWidth = $('#hidden').width();

     inputWidth = $('#from-1 select').width();

     indentMy = (inputWidth / 2) - (textWidth / 2);

    $('#from-1').css('text-indent',indentMy);

}
textIndentFunc();
<div id="trigger">Hai</div>

于 2016-06-30T10:06:30.233 回答
0

您是否还有另一个在页面加载时运行的功能?因为如果是这种情况,可能这两个函数有冲突......

于 2012-05-14T15:47:20.797 回答
0

如果您已经拨打电话但仍未收到您所期望的,请textIndendFunc尝试转至.$(document).readytextIndentFunc$(window).load

于 2012-05-14T15:49:44.073 回答